Heim >Datenbank >MySQL-Tutorial >Wie suche ich nach literalen eckigen Klammern in Definitionen gespeicherter SQL Server-Prozeduren?
Suchen Sie nach Text, der eckige Klammern in gespeicherten SQL Server-Prozeduren enthält
Sie möchten alle gespeicherten Prozeduren in der Datenbank finden, die eine bestimmte Textzeichenfolge enthalten, einschließlich der Fälle, in denen die Zeichenfolge in eckige Klammern eingeschlossen ist, haben jedoch Schwierigkeiten. Sie haben die folgende Abfrage verwendet:
<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>
Diese Abfrage gibt jedoch falsche Ergebnisse zurück, da der SQL-LIKE-Operator eckige Klammern als Platzhalterzeichen und nicht als Literalzeichen interpretiert.
Lösung:
Um in einer gespeicherten Prozedurdefinition nach wörtlichen eckigen Klammern zu suchen, müssen Sie diese in der Abfrage maskieren. Dies kann mit der ESCAPE-Klausel erreicht werden:
<code class="language-sql">... WHERE m.definition Like '%\[ABD\]%' ESCAPE '\'</code>Die
ESCAPE-Klausel teilt SQL Server mit, dass die folgenden Zeichen nicht als Platzhalter, sondern als Literalzeichen interpretiert werden sollen. In diesem Beispiel wird das Backslash-Zeichen () als Escape-Zeichen verwendet.
Durch die Verwendung von maskierten eckigen Klammern identifiziert und zeigt Ihre Abfrage jetzt genau gespeicherte Prozeduren an, deren Definition die Zeichenfolge „[ABD]“ enthält.
Das obige ist der detaillierte Inhalt vonWie suche ich nach literalen eckigen Klammern in Definitionen gespeicherter SQL Server-Prozeduren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!