Du har två alternativ:
-
bifoga dem i
[
och]
. Så:where pattern like '[%]'
Letar efter procenttecknet. Fullständig lista över tecken som ska escape -
'_', '%', '[', ']'
med motsvarande ersättningar'[_]', '[%]', '[[]', '[]]'
. Exempelkod finns i Escape av escape-tecknet fungerar inte – SQL LIKE Operator -
använd ett escape-tecken som sannolikt inte finns i strängen, till exempel en backtick:
where pattern like '`%' escape '`'
(Se syntaxen på MSDN - LIKE (Transact-SQL) .)
I båda fallen skulle jag föreslå att du gör ersättningen i applikationslagret, men du kan också göra det i SQL om du verkligen vill:
where pattern like replace(@pattern, '%', '[%]')
Och att ge slutanvändaren tillgång till jokertecken kan vara bra när det gäller användargränssnittet.
Obs:det finns ytterligare ett par specialtecken '-'
och '^'
i LIKE-frågan, men de behöver inte escapes om du redan escaper '['
och ']'
.