Rechercher des lignes avec des caractères spéciaux dans SQL Server
Lors de la résolution d’un problème de programmation aujourd’hui, j’ai constaté qu’il était impossible d’utiliser une recherche LIKE pour les colonnes de chaînes contenant des caractères spéciaux tels que% ou _ sans utiliser une syntaxe spéciale. Identifier le problème ne prend que quelques minutes, mais la syntaxe est toujours plus facile à mémoriser si vous en écrivez..
Donc oui, ce poste est uniquement pour mon bénéfice. Espérons que cela aidera aussi quelqu'un d'autre.
Supposons que vous souhaitiez rechercher les champs contenant le texte «100%». Vous devez donc regrouper cette requête:
SELECT * FROM nom_table WHERE nom_zone LIKE '% 100 %%'
Au lieu de ce que vous vouliez, vous obtiendrez toutes les lignes contenant «100» ainsi que les lignes contenant «100%»..
Le problème ici est que SQL Server utilise le signe de pourcentage, le trait de soulignement et les crochets comme caractères spéciaux. Vous ne pouvez simplement pas les utiliser comme un caractère brut dans une requête LIKE sans les échapper.
Support carré évasion
Vous pouvez entourer le% ou le _ avec des crochets pour indiquer à SQL Server que le caractère à l'intérieur est un caractère normal.
SELECT * FROM nom_table WHERE nom_zone LIKE '% 100 [%]%'
Syntaxe ESCAPE T-SQL
Vous pouvez également ajouter l'opérateur ESCAPE à votre requête et ajouter un caractère \ avant la valeur à échapper..
SELECT * FROM nom_table WHERE nom_zone LIKE '% 100 \ %%' ESCAPE '\'
La partie '\' ESCAPE 'de la requête indique au moteur SQL d'interpréter le caractère après le \ comme un caractère littéral au lieu d'un caractère générique.
Personnellement, je trouve la deuxième méthode plus facile à traiter et vous pouvez également l’utiliser pour échapper à un crochet.