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.