Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thoát một chuỗi trong SQL Server để an toàn khi sử dụng trong biểu thức LIKE

Để thoát các ký tự đặc biệt trong biểu thức LIKE, bạn bắt đầu chúng bằng một ký tự thoát. Bạn có thể chọn thoát char sẽ sử dụng với từ khóa ESCAPE. (Tham khảo MSDN)

Ví dụ:điều này thoát khỏi biểu tượng%, sử dụng \ làm ký tự thoát:

select * from table where myfield like '%15\% off%' ESCAPE '\'

Nếu bạn không biết những ký tự nào sẽ có trong chuỗi của mình và bạn không muốn coi chúng là ký tự đại diện, bạn có thể đặt tiền tố tất cả các ký tự đại diện bằng một ký tự thoát, ví dụ:

set @myString = replace( 
                replace( 
                replace( 
                replace( @myString
                ,    '\', '\\' )
                ,    '%', '\%' )
                ,    '_', '\_' )
                ,    '[', '\[' )

(Lưu ý rằng bạn cũng phải thoát ký tự thoát của mình và đảm bảo rằng đó là replace bên trong vì vậy bạn không thoát khỏi những cái được thêm vào từ replace khác các câu lệnh). Sau đó, bạn có thể sử dụng một cái gì đó như sau:

select * from table where myfield like '%' + @myString + '%' ESCAPE '\'

Ngoài ra, hãy nhớ phân bổ nhiều không gian hơn cho biến @myString của bạn vì nó sẽ dài hơn khi thay thế chuỗi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ý nghĩa của tiền tố N trong các câu lệnh T-SQL là gì và khi nào tôi nên sử dụng nó?

  2. Công dụng của dấu ngoặc vuông [] trong câu lệnh sql là gì?

  3. Kết nối với SQL Server thông qua PDO bằng SQL Server Driver

  4. Làm cách nào để tôi có được một Kế hoạch Thực thi Truy vấn trong SQL Server?

  5. Khắc phục sự cố về hiệu suất CPU của máy chủ SQL