ホームページ >データベース >mysql チュートリアル >SQL Server ストアド プロシージャ定義でリテラル角括弧を検索するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。