Question

Comment puis-je échapper au caractère de soulignement ?

J'écris quelque chose comme la clause Where suivante et je souhaite pouvoir trouver les entrées réelles avec _d à la fin.

Where Username Like '%_d'
Était-ce utile?

La solution

Référence T-SQL pour LIKE pour SQL Server 2000:

Vous pouvez utiliser les caractères génériques de correspondance comme caractères littéraux.Pour utiliser un caractère générique comme caractère littéral, placez-le entre parenthèses.Le tableau présente plusieurs exemples d'utilisation du mot-clé LIKE et des caractères génériques [ ].

Pour votre cas :

... LIKE '%[_]d'

Autres conseils

Évidemment, la solution @Lasse est correcte, mais il existe une autre façon de résoudre votre problème :Opérateur T-SQL LIKE définit l'option S'ÉCHAPPER clause, qui vous permet de déclarer un caractère qui échappera au caractère suivant dans le modèle.

Pour votre cas, les clauses WHERE suivantes sont équivalentes :

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

Ces solutions sont tout à fait logiques.Malheureusement, ni l’un ni l’autre n’a fonctionné pour moi comme prévu.Au lieu d'essayer de m'en préoccuper, j'ai opté pour une solution de contournement :

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name

Cela a fonctionné pour moi, utilisez simplement l'évasion'%\_%'

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top