83 votes

Échapper une chaîne de caractères dans SQL Server pour qu'elle puisse être utilisée en toute sécurité dans une expression LIKE

Comment échapper une chaîne de caractères dans une procédure stockée du serveur SQL pour qu'elle puisse être utilisée en toute sécurité dans les procédures stockées du serveur SQL ? LIKE l'expression.

Supposons que je dispose d'un NVARCHAR variable comme suit :

declare @myString NVARCHAR(100);

Et je veux l'utiliser dans un LIKE l'expression :

... WHERE ... LIKE '%' + @myString + '%';

Comment échapper à la chaîne de caractères (plus précisément, aux caractères significatifs pour les LIKE la recherche de motifs, par exemple % o ? ) en T-SQL, afin qu'il puisse être utilisé en toute sécurité de cette manière ?

Par exemple, étant donné :

@myString = 'aa%bb'

Je veux :

WHERE ... LIKE '%' + @somehowEscapedMyString + '%'

pour correspondre 'aa%bb' , 'caa%bbc' mais pas 'aaxbb' o 'caaxbb' .

0voto

lad2025 Points 38168

Syntaxe d'échappement alternative :

LIKE Caractères génériques

Le pilote JDBC prend en charge l'option {escape 'caractère d'échappement'} pour utiliser les caractères génériques de la clause LIKE comme éléments littéraux.

SELECT *
FROM tab
WHERE col LIKE 'a\_c' {escape '\'};

db<>fiddle demo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X