top of page

Eckige Klammern in "LIKE" -Abfragen. / Square brackets in "LIKE" queries.

(alle Versionen/all versions)

Dienstag, 24. August 2021

Deutsch

English


Deutsch

Situation:

Der Versuch, in einer SELECT-Anweisung zurückgegebenen Ergebnisse mithilfe einer LIKE-Klausel mit einer Zeichenfolge mit eckigen Klammern zu filtern, liefert u.U. nicht das erwartete Ergebnis. In einer Beispieltabellenspalte befindet sich beispielsweise der Zeichenfolgenwert:

WD[C]97586

Wenn man versucht, nachfolgende SQL-Bedingung auf die select-Anweisung anzuwenden, werden keine Datensätze zurückgegeben.

LIKE 'WD[C]%'
ree













Ursache:

Dies liegt daran, dass die eckige Klammer eines der Platzhalterzeichen in der LIKE-Klausel ist.

Laut Microsoft Docs können eckige Klammern in der LIKE-Klausel verwendet werden, um jedes einzelne Zeichen innerhalb des angegebenen Bereichs ([b-h]) oder Satzes ([ghijk]) abzugleichen.

Lösungsoptionen:

Um eckige Klammern in LIKE zu maskieren, kann man andere eckige Klammer verwenden, um die ursprüngliche eckige Klammer zu maskieren, oder ein benutzerdefiniertes Escape-Zeichen verwenden, indem mandas ESCAPE-Schlüsselwort in der LIKE-Klausel verwendet.



Methode 1:

SELECT *
   FROM dbo.KHKArtikel
   WHERE [Matchcode] LIKE 'WD[[]C]%'
GO

Hinweis: Man muss die schließende eckige Klammer ']' nicht mit einem Escape-Zeichen versehen, da diesenach dem Escape-Zeichen aus der öffnenden eckigen Klammer keine besondere Bedeutung hat.



Methode 2:

SELECT *
   FROM dbo.KHKArtikel
   WHERE [Matchcode] LIKE 'WD\[C]%' ESCAPE '\'
GO

Diese Methode hat den Vorteil, dass sie leserlicher ist.

Das Escape-Zeichen kann man frei wählen.



English

Situation:

Attempting to filter results returned in a SELECT statement using a LIKE clause with a string containing square brackets may not produce the expected result.

For example, in an example table column, the string value is:

WD[C]97586

Attempting to apply the following SQL condition to the select statement will not return any records.

LIKE 'WD[C]%'
ree













Reason:

This is because the square bracket is one of the wildcard characters in the LIKE clause.

According to Microsoft Docs, square brackets can be used in the LIKE clause to match any single character within the specified range ([b-h]) or set ([ghijk]).

Possible solutions:

To escape square brackets in LIKE, one can use different square brackets to escape the original square bracket, or use a custom escape character by using the ESCAPE keyword in the LIKE clause.



Method 1:

SELECT *
   FROM dbo.KHKArtikel
   WHERE [Matchcode] LIKE 'WD[[]C]%'
GO

Note: There is no need to escape the closing square bracket ']' as it has no special meaning after the escape character from the opening square bracket.



Method 2:

SELECT *
   FROM dbo.KHKArtikel
   WHERE [Matchcode] LIKE 'WD\[C]%' ESCAPE '\'
GO

This method has the advantage of being easier to read.

You can choose a suitable escape character you prefer.



bottom of page