In SQLite können Sie den LIKE
verwenden -Operator in Ihren Abfragen, um einen Musterabgleichsvergleich durchzuführen.
Sie können es beispielsweise zu Ihrem WHERE
hinzufügen -Klausel, um nur Zeilen zurückzugeben, die einem bestimmten Muster entsprechen.
Fügen Sie es jedoch dem WHERE
hinzu -Klausel ist nicht die einzige Möglichkeit, den LIKE
zu verwenden Operator. Sie können es auch verwenden, um einen booleschen Wert zurückzugeben.
Einfaches Beispiel
Hier ist ein einfaches Beispiel, das den LIKE
verwendet Operator in einem WHERE
Klausel.
SELECT * FROM Artist
WHERE Name LIKE 'Black%';
Ergebnis:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 169 Black Eyed Peas
In diesem Fall wollte ich alle Künstler zurückgeben, deren Namen mit Schwarz beginnen .
Das Prozentzeichen ist ein Platzhalterzeichen, das mit keinem oder mehreren beliebigen Zeichen (einschließlich Leerzeichen) übereinstimmt.
Ohne Wildcard
Wenn ich das Platzhalterzeichen nicht verwendet hätte, hätte ich keine Ergebnisse erhalten.
Hier ist ein Beispiel dafür, was ich meine:
SELECT * FROM Artist
WHERE Name LIKE 'Black';
Ergebnis:
(Das ist absichtlich leer, weil es keine Ergebnisse gab.)
Mehrere Platzhalter
Sie können bei Bedarf mehr als ein Platzhalterzeichen verwenden. In diesem Beispiel füge ich ein weiteres vor meinem Muster hinzu.
SELECT * FROM Artist
WHERE Name LIKE '%Black%';
Ergebnis:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 38 Banda Black Rio 137 The Black Crowes 169 Black Eyed Peas
Dies führt dazu, dass mehr Zeilen zurückgegeben werden, da es zwei Zeilen mit Schwarz gibt in ihrem Namen, aber eben nicht am Anfang.
Der Unterstrich (_) Platzhalter
Sie haben auch die Möglichkeit, den Unterstrich (_
) Platzhalter.
Dieses Platzhalterzeichen entspricht genau einem Zeichen (beliebiges Zeichen).
Betrachten Sie die folgende Tabelle namens Cats :
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
Ja, einige dieser Katzen haben seltsame Namen, aber sie werden sich als nützlich erweisen.
Hier ist ein Beispiel für die Verwendung des Unterstrich-Platzhalters in einer Abfrage für diese Tabelle.
SELECT * FROM Cats
WHERE CatName LIKE 'Br_sh';
Ergebnis:
CatId CatName ---------- ---------- 1 Brush 2 Brash
Beachten Sie, dass die Katze Broosh heißt ist nicht enthalten.
Um Broosh einzuschließen , müsste ich zwei Unterstriche verwenden:
SELECT * FROM Cats
WHERE CatName LIKE 'Br__sh';
Ergebnis:
CatId CatName ---------- ---------- 3 Broosh
Dies schließt jedoch die anderen beiden Katzen aus.
Ich könnte immer ein Prozentzeichen verwenden, um die anderen Katzen einzubeziehen.
SELECT * FROM Cats
WHERE CatName LIKE 'Br%sh';
Ergebnis:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh
Beachten Sie jedoch, dass dies auch Namen mit mehr als zwei Zeichen zwischen Br zurückgeben würde und sh .
Die ESCAPE-Klausel
Manchmal können Ihre Daten tatsächlich die Platzhalterzeichen enthalten. Mit anderen Worten, die Daten enthalten Unterstriche oder Prozentzeichen.
Dies könnte ein Problem sein, wenn Sie tatsächlich versuchen, den Unterstrich oder das Prozentzeichen als wörtliches Zeichen und nicht als Platzhalter zu finden.
In meiner Katzentabelle werden Sie feststellen, dass eine Katze ein Prozentzeichen in ihrem Namen hat. Eine andere Katze hat fast genau den gleichen Namen, außer dass es statt eines Prozentzeichens ein Dollarzeichen ist.
Hier ist noch einmal die Tabelle:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
Wenn ich nur die Katzen zurückgeben wollte, deren Namen mit 100%F beginnen dann müsste ich dem % entkommen . Wenn ich dem nicht entkommen würde, würde ich unerwünschte Ergebnisse erhalten.
Folgendes passiert, wenn ich eine Abfrage ohne ausführe das Prozentzeichen maskieren.
SELECT * FROM Cats
WHERE CatName LIKE '100%F';
Ergebnis:
CatId CatName ---------- ---------- 4 100%Fluff 5 100$Fluff
In diesem Fall stimmte das Prozentzeichen auch mit dem Dollarzeichen überein, da das Prozentzeichen als Platzhalterzeichen behandelt wurde.
Um sicherzustellen, dass das Prozentzeichen nicht als Platzhalterzeichen behandelt wird, können wir den ESCAPE
verwenden Klausel.
SELECT * FROM Cats
WHERE CatName LIKE '100\%%F' ESCAPE '\';
Ergebnis:
CatId CatName ---------- ---------- 4 100%Fluff
Gib einen booleschen Wert zurück
Sie können den LIKE
verwenden -Operator, um eine 0 zurückzugeben oder 1 , abhängig davon, ob es eine Übereinstimmung gibt oder nicht.
Hier ist ein Beispiel.
SELECT
CatName,
CatName LIKE 'Br%'
FROM Cats;
Ergebnis:
CatName CatName LIKE 'Br%' ---------- ------------------ Brush 1 Brash 1 Broosh 1 100%Fluff 0 100$Fluff 0
In diesem Fall stimmen die ersten drei Zeilen mit den Kriterien überein und die letzten beiden Zeilen nicht.
Groß- und Kleinschreibung
Standardmäßig ist die SQLite LIKE
Operator ist case-insensitive für ASCII-Zeichen. Das bedeutet, dass Groß- und Kleinbuchstaben übereinstimmen, unabhängig davon, welche Schreibweise Sie in Ihrem Muster verwenden.
Sie können case_sensitive_like verwenden PRAGMA-Anweisung zur Durchführung von Übereinstimmungen mit Berücksichtigung der Groß-/Kleinschreibung im ASCII-Bereich.
Beispiele finden Sie unter So machen Sie den LIKE-Operator von SQLite unter Berücksichtigung der Groß- und Kleinschreibung.
Die Like()-Funktion
Alternativ können Sie auch like()
verwenden Funktion.
Diese Funktion macht genau dasselbe wie LIKE
-Operator, außer dass Sie eine etwas andere Syntax verwenden müssen.
Alle obigen Beispiele könnten umgeschrieben werden, um like()
zu verwenden Funktion falls erforderlich.