Comment puis-je échapper à un signe de pourcentage dans T-SQL?

191

Cette question a également la réponse , mais elle mentionne spécifiquement DB2.

Comment rechercher une chaîne en utilisant LIKEqui contient déjà un %symbole de pourcentage ? L' LIKEopérateur utilise des %symboles pour désigner des caractères génériques.

Jedidja
la source

Réponses:

292

Utilisez des crochets. Donc chercher 75%

WHERE MyCol LIKE '%75[%]%'

C'est plus simple que ESCAPE et commun à la plupart des SGBDR.

gbn
la source
2
notez également que vous n'avez pas à échapper à un symbole de pourcentage dans d'autres constructions telles qu'une fonction utilisateur, une concaténation, etc.
Bron Davies
2
Vous pouvez échapper aussi le trait de soulignement caractère générique aussi: [_]. Comment échapper alors au crochet carré ouvert? Comme ceci: [[]. sqlserver2000.databases.aspfaq.com/…
Csaba Toth
L'utilisation de la clause ESCAPE est plus facile à comprendre que le mécanisme de cotation cérébrale de MS.
Suncat2000
53

Vous pouvez utiliser le ESCAPEmot - clé avec LIKE. Ajoutez simplement le caractère souhaité (par exemple «!») À chacun des %signes existants dans la chaîne, puis ajoutez ESCAPE '!'(ou le caractère de votre choix) à la fin de la requête.

Par exemple:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'

Cela permettra à la base de données de traiter 80% comme une partie réelle de la chaîne à rechercher et non 80 (caractère générique).

Documents MSDN pour LIKE

Jedidja
la source
15
WHERE column_name LIKE '%save 50[%] off!%'
Aaron Bertrand
la source
0

Dans MySQL ,

WHERE column_name LIKE '%|%%' ESCAPE '|'

Kishan Solanki
la source
Mais la question portait sur T-SQL.
Peter Mortensen