Recherche de procédures stockées contenant un texte spécifique, y compris des caractères spéciaux
La recherche d'un texte spécifique dans les procédures stockées SQL Server peut être délicate, en particulier lorsque ce texte comprend des caractères spéciaux tels que des crochets.
Le défi :
Imaginez avoir besoin de rechercher toutes les procédures stockées contenant la chaîne "[ABD]". Une approche naïve utilisant LIKE
pourrait ressembler à ceci :
<code class="language-sql">SELECT DISTINCT o.name AS Object_Name, o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id WHERE m.definition LIKE '%[ABD]%';</code>
Cela échoue car LIKE
interprète les crochets comme des caractères génériques, ce qui rend la recherche inexacte.
La solution :
La clé est d'échapper aux caractères spéciaux. SQL Server utilise la barre oblique inverse () comme caractère d'échappement. Voici la requête corrigée :
<code class="language-sql">SELECT DISTINCT o.name AS Object_Name, o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id WHERE m.definition LIKE '%\[ABD\]%' ESCAPE '\';</code>
La clause ESCAPE ''
indique à LIKE
de traiter tout caractère précédé d'une barre oblique inverse comme un caractère littéral, et non comme un caractère générique. Cela garantit que la recherche identifie avec précision les procédures stockées contenant la chaîne exacte « [ABD] ». Cette méthode gère efficacement d'autres caractères spéciaux dans les définitions de procédures stockées, fournissant des résultats de recherche précis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!