LIKE unterstützt Mustervergleiche im
ASCII- und Unicodeformat. Sind alle Argumente (match_expression, pattern und gegebenenfalls escape_character)
ASCII-Zeichen, wird ein
ASCII-Mustervergleich durchgeführt. Wenn eines der Argumente von einem
Unicode-Datentyp ist, werden alle Argumente in
Unicode konvertiert und ein
Unicode-Mustervergleich durchgeführt. Wenn Sie beim LIKE-Operator
Unicode-Daten (nchar- oder nvarchar-Datentypen) verwenden, werden nachfolgende Leerzeichen berücksichtigt. Bei Daten, die nicht vom Typ
Unicode sind, werden nachfolgende Leerzeichen ignoriert. Der
Unicode-LIKE-Operator ist mit dem
SQL-92-Standard kompatibel. Der
ASCII-LIKE-Operator ist mit früheren Versionen von
SQL Server kompatibel.
Die folgenden Beispiele verdeutlichen die Unterschiede der zurückgegebenen Zeilen beim Durchführen von Mustervergleichen mit
ASCII- und
Unicode-LIKE-Operatoren:
--
ASCII pattern matching with char column
CREATE TABLE t (col1 char(30))
INSERT INTO t VALUES ('Robert King')
SELECT *
FROM t
WHERE col1 LIKE '% King' -- returns 1 row
--
Unicode pattern matching with nchar column
CREATE TABLE t (col1 nchar(30))
INSERT INTO t VALUES ('Robert King')
SELECT *
FROM t
WHERE col1 LIKE '% King' -- no rows returned
--
Unicode pattern matching with nchar column and RTRIM
CREATE TABLE t (col1 nchar (30))
INSERT INTO t VALUES ('Robert King')
SELECT *
FROM t
WHERE RTRIM(col1) LIKE '% King' -- returns 1 row
Anmerkung Beim Durchführen von Zeichenfolgenvergleichen mit LIKE werden alle Zeichen der Musterzeichenfolge berücksichtigt, einschließlich führender und nachfolgender Leerzeichen.
Verwenden des %-Platzhalterzeichens
Wird bei LIKE beispielsweise 5% angegeben, sucht
SQL Server nach der Zahl 5, gefolgt von einer beliebigen Zeichenfolge mit null oder mehr Zeichen.
In der folgenden Abfrage werden z. B. alle Systemtabellen einer Datenbank angezeigt, da alle Namen dieser Tabellen mit den Buchstaben sys beginnen:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'sys%'