ホームページ >データベース >mysql チュートリアル >SQL Server ストアド プロシージャ定義でリテラル角括弧を検索するにはどうすればよいですか?

SQL Server ストアド プロシージャ定義でリテラル角括弧を検索するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-07 16:22:41629ブラウズ

How to Search for Literal Square Brackets in SQL Server Stored Procedure Definitions?

SQL Server ストアド プロシージャで角括弧を含むテキストを検索

特定のテキスト文字列 (文字列が角括弧で囲まれている場合も含む) を含むすべてのストアド プロシージャをデータベース内で検索したいと考えていますが、いくつかの困難が発生しています。次のクエリを使用しました:

<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>

ただし、SQL LIKE 演算子は角括弧をリテラル文字ではなくワイルドカード文字として解釈するため、このクエリは間違った結果を返します。

解決策:

ストアド プロシージャ定義内でリテラル角括弧を検索するには、クエリ内で角括弧をエスケープする必要があります。これは、ESCAPE 句を使用して実現できます:

<code class="language-sql">...
WHERE m.definition Like '%\[ABD\]%' ESCAPE '\'</code>

ESCAPE 句は、次の文字をワイルドカードとしてではなくリテラル文字として解釈するように SQL Server に指示します。この例では、バックスラッシュ文字 () がエスケープ文字として使用されます。

エスケープされた角括弧を使用することにより、クエリは定義に文字列 "[ABD]" を含むストアド プロシージャを正確に識別して表示するようになりました。

以上がSQL Server ストアド プロシージャ定義でリテラル角括弧を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。