尋找包含特定文字(包括特殊字元)的預存程序
在 SQL Server 預存程序中搜尋特定文字可能很棘手,特別是當該文字包含方括號等特殊字元時。
挑戰:
想像一下需要尋找包含字串「[ABD]」的所有預存程序。 使用 LIKE
的簡單方法可能如下所示:
<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>
此操作失敗,因為 LIKE
將方括號解釋為通配符,導致搜尋不準確。
解:
關鍵是對特殊字元進行轉義。 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\]%' ESCAPE '\';</code>
ESCAPE ''
子句告訴 LIKE
將反斜線前面的任何字符視為文字字符,而不是通配符。 這可確保搜尋準確地識別包含確切字串「[ABD]」的預存程序。 此方法有效地處理預存程序定義中的其他特殊字符,提供準確的搜尋結果。
以上是如何在SQL Server中搜尋包含特定文字(包括特殊字元)的預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!