Kategorien:

Zeichenfolgen- und Binärfunktionen (Abgleich/Vergleich)

[ NOT ] LIKE

Führt einen Vergleich unter Berücksichtigung der Groß-/Kleinschreibung aus, um festzustellen, ob eine Zeichenfolge mit einem angegebenen Muster übereinstimmt oder nicht. Verwenden Sie für Abgleiche ohne Berücksichtigung der Groß- und Kleinschreibung stattdessen ILIKE.

LIKE, ILIKE und RLIKE führen alle ähnliche Operationen aus. RLIKE nutzt jedoch die POSIX ERE (Extended Regular Expression)-Syntax und nicht die SQL-Mustersyntax, die von LIKE und ILIKE verwendet wird.

Tipp

Sie können den Suchoptimierungsdienst verwenden, um die Leistung von Abfragen zu verbessern, die diese Funktion aufrufen. Weitere Details dazu finden Sie unter Suchoptimierungsdienst.

Siehe auch::

[ NOT ] ILIKE , [ NOT ] RLIKE , LIKE ALL, LIKE ANY

Syntax

<subject> [ NOT ] LIKE <pattern> [ ESCAPE <escape> ]

LIKE( <subject> , <pattern> [ , <escape> ] )
Copy

Argumente

Benötigt:

subject

Abzugleichendes Subjekt. Dies ist normalerweise ein VARCHAR, obwohl auch andere Datentypen verwendet werden können.

pattern

Abzugleichendes Muster. Dies ist normalerweise ein VARCHAR, obwohl auch andere Datentypen verwendet werden können.

Optional:

escape

Zeichen, die vor einem Platzhalterzeichen eingefügt werden, um anzuzeigen, dass der Platzhalter als normales Zeichen und nicht als Platzhalter interpretiert werden soll.

Rückgabewerte

Gibt einen BOOLEAN-Wert oder NULL zurück.

  • Wenn LIKE angegeben ist und eine Übereinstimmung vorliegt, ist der Wert TRUE. Andernfalls wird FALSE zurückgegeben.

  • Wenn NOT LIKE angegeben ist und keine Übereinstimmung vorliegt, ist der Wert TRUE. Andernfalls wird FALSE zurückgegeben.

  • Wenn entweder LIKE oder NOT LIKE angegeben ist, wird NULL zurückgegeben, wenn ein Argument NULL ist.

Nutzungshinweise

  • SQL-Platzhalter werden in pattern unterstützt:

    • Ein Unterstrich (_) nimmt einen Abgleich für beliebige Einzelzeichen vor.

    • Ein Prozentzeichen (%) nimmt einen Abgleich für eine beliebige Sequenz von null oder mehr Zeichen vor.

  • Platzhalter in pattern erkennen in subject-Werten auch Zeilenumbruchzeichen (n) als Übereinstimmungen.

  • Eine Mustererkennung mit LIKE deckt die gesamte Zeichenfolge ab. Um eine Sequenz an einer bestimmten Stelle in einer Zeichenfolge abzugleichen, beginnen und beenden Sie das Muster mit %.

  • NULL stimmt nicht mit NULL überein. Mit anderen Worten: Wenn das Subjekt NULL ist und das Muster NULL ist, wird dies nicht als Übereinstimmung angesehen.

  • Es gibt kein Standard-Escape-Zeichen.

  • Wenn Sie den umgekehrten Schrägstrich (Backslash) als Escape-Zeichen verwenden, müssen Sie den Backslash in der ESCAPE-Klausel als Escape-Zeichen angeben. Der folgende Befehl gibt beispielsweise an, dass das Escape-Zeichen der Backslash ist, und sucht dann mit diesem Escape-Zeichen nach „%“ als Literal (ohne das Escape-Zeichen wird „%“ als Platzhalter behandelt):

    'SOMETHING%' LIKE '%\\%%' ESCAPE '\\';
    
    Copy

    Beispiele zur Verwendung von Escape-Zeichen und insbesondere des umgekehrten Schrägstrichs als Escape-Zeichen finden Sie unter Beispiele.

Sortierungsdetails

Es werden nur die Sortierungsspezifikationen upper, lower und trim unterstützt. Kombinationen mit upper, lower und trim werden ebenfalls unterstützt (z. B. upper-trim und lower-trim), mit Ausnahme von Gebietsschema-Kombinationen (z. B. en-upper).

Bemerkung

Um diese Funktion mit einer Spalte zu verwenden, die die Sortierungsspezifizierer upper, lower oder trim hat, müssen Sie das Verhaltensänderungs-Bundle 2024_02 in Ihrem Konto aktivieren.

Um dieses Bundle in Ihrem Konto zu aktivieren, führen Sie die folgende Anweisung aus:

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Copy

Beispiele

Die folgenden Beispiele zeigen die Verwendung von LIKE, NOT LIKE und des Platzhalterzeichens %:

CREATE OR REPLACE TABLE like_ex(name VARCHAR(20));
INSERT INTO like_ex VALUES
    ('John  Dddoe'),
    ('Joe   Doe'),
    ('John_down'),
    ('Joe down'),
    ('Elaine'),
    (''),    -- empty string
    (null);
Copy
SELECT name
    FROM like_ex
    WHERE name LIKE '%Jo%oe%'
    ORDER BY name;
Copy
+-------------+                                                                 
| NAME        |
|-------------|
| Joe   Doe   |
| John  Dddoe |
+-------------+
SELECT name
    FROM like_ex
    WHERE name NOT LIKE '%Jo%oe%'
    ORDER BY name;
Copy
+-----------+
| NAME      |
|-----------|
|           |
| Elaine    |
| Joe down  |
| John_down |
+-----------+
SELECT name
    FROM like_ex
    WHERE name LIKE '%J%h%^_do%' ESCAPE '^'
    ORDER BY name;
Copy
+-----------+                                                                   
| NAME      |
|-----------|
| John_down |
+-----------+
SELECT name
    FROM like_ex
    WHERE name NOT LIKE 'John%'
    ORDER BY name;
Copy
+-----------+                                                                   
| NAME      |
|-----------|
|           |
| Elaine    |
| Joe   Doe |
| Joe down  |
+-----------+
SELECT name
    FROM like_ex
    WHERE name NOT LIKE ''
    ORDER BY name;
Copy
+-------------+                                                                 
| NAME        |
|-------------|
| Elaine      |
| Joe   Doe   |
| Joe down    |
| John  Dddoe |
| John_down   |
+-------------+

Im folgenden Beispiel wird eine ESCAPE-Klausel verwendet:

INSERT INTO like_ex (name) VALUES 
    ('100 times'),
    ('1000 times'),
    ('100%');
Copy

Ohne das Escape-Zeichen wird das Prozentzeichen („%“) als Platzhalter behandelt:

SELECT * FROM like_ex WHERE name LIKE '100%'
    ORDER BY 1;
Copy
+------------+                                                                  
| NAME       |
|------------|
| 100 times  |
| 100%       |
| 1000 times |
+------------+

Beim Escape-Zeichen wird das Prozentzeichen („%“) als Literal behandelt:

SELECT * FROM like_ex WHERE name LIKE '100^%' ESCAPE '^'
    ORDER BY 1;
Copy
+------+                                                                        
| NAME |
|------|
| 100% |
+------+

Im folgenden Beispiel wird eine ESCAPE-Klausel verwendet, in der der umgekehrte Schrägstrich (Backslash) das Escape-Zeichen ist. Beachten Sie, dass der Backslash selbst sowohl in der ESCAPE-Klausel als auch im Ausdruck mit Escape-Zeichen versehen werden muss:

SELECT * FROM like_ex WHERE name LIKE '100\\%' ESCAPE '\\'
    ORDER BY 1;
Copy
+------+                                                                        
| NAME |
|------|
| 100% |
+------+