Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wypisz ciąg znaków w SQL Server, aby można go było bezpiecznie używać w wyrażeniu LIKE

Aby zmienić znaczenie znaków specjalnych w wyrażeniu LIKE, poprzedzasz je znakiem zmiany znaczenia. Możesz wybrać, którego znaku ucieczki użyć ze słowem kluczowym ESCAPE. (Odniesienie MSDN)

Na przykład ten znak ucieka symbolu %, używając znaku \ jako znaku ucieczki:

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

Jeśli nie wiesz, jakie znaki będą w Twoim ciągu i nie chcesz traktować ich jako symboli wieloznacznych, możesz poprzedzić wszystkie znaki wieloznaczne znakiem ucieczki, np.:

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

(Zauważ, że musisz również zmienić swój znak ucieczki i upewnij się, że jest to wewnętrzny replace więc nie unikasz tych dodanych z innych replace sprawozdania). Następnie możesz użyć czegoś takiego:

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

Pamiętaj również, aby przydzielić więcej miejsca na zmienną @myString, ponieważ po zastąpieniu ciągu będzie ona dłuższa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Napisz liczbę z dwoma miejscami po przecinku SQL Server

  2. 4 sposoby sprawdzenia, czy tabela istnieje przed upuszczeniem jej w SQL Server (T-SQL)

  3. Serwer SQL ignoruje wielkość liter w wyrażeniu gdzie

  4. 13 najlepszych praktyk w zakresie bezpieczeństwa SQL Server

  5. Dlaczego EF generuje zapytania SQL z niepotrzebnymi kontrolami wartości null?