SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite Like() Funktion mit Beispielen

Das SQLite like() Mit der Funktion können Sie eine Zeichenfolge mit einem bestimmten Muster vergleichen. Sie können bei Bedarf auch ein Fluchtzeichen angeben.

Sie können das like() verwenden Funktion als Alternative zum LIKE Operator (mit dem Sie den Y LIKE X [ESCAPE Z] ausführen können Ausdruck).

Syntax

Sie können eines der folgenden verwenden:

like(X,Y)
like(X,Y,Z)
  • X ist das Muster
  • Y ist die Zeichenfolge
  • Z ist ein optionales Fluchtzeichen

Einfaches Beispiel

Nehmen Sie die folgende Tabelle:

CatId       CatName   
----------  ----------
1           Brush     
2           Flutter   
3           100%Fluff 
4           100$Fluff 

Wir können den folgenden Code ausführen, um alle Zeilen zurückzugeben, in denen der Name der Katze mit dem Buchstaben F beginnt:

SELECT * FROM Cats 
WHERE like('F%', CatName);

Ergebnis:

CatId       CatName   
----------  ----------
3           Flutter   

In diesem Beispiel habe ich den % verwendet Platzhalterzeichen, um anzugeben, dass beliebig viele Zeichen folgen können (einschließlich Nullzeichen), und dass es sich um beliebige Zeichen handeln kann.

Der Unterstrich (_) Zeichen

Hier ist ein Beispiel, das den Unterstrich (_ ) Charakter. Dieses Platzhalterzeichen entspricht genau einem Zeichen – nicht mehr und nicht weniger.

SELECT * FROM Cats 
WHERE like('Br_sh', CatName);

Ergebnis:

CatId       CatName   
----------  ----------
1           Brush     

Wie bereits erwähnt, stimmt es nur mit einem einzigen Zeichen überein. Basierend auf meinen Daten kann ich also Folgendes nicht tun und keine Übereinstimmungen erwarten.

SELECT * FROM Cats 
WHERE like('Br_', CatName);

Ergebnis:

 

(Dies ist absichtlich leer, da keine Ergebnisse vorliegen).

Escapezeichen

Sie können bei Bedarf auch Zeichen maskieren. Fügen Sie dazu das Escape-Zeichen als dritten Parameter hinzu (und fügen Sie es auch vor dem Zeichen hinzu, das Sie mit Escapezeichen versehen möchten).

SELECT * FROM Cats 
WHERE like('100\%F%', CatName, '\');

Ergebnis:

CatId       CatName   
----------  ----------
3           100%Fluff 

In diesem Fall habe ich das Prozentzeichen maskiert (% ). Ich tat dies, weil ich nach Katzen suchte, die ein echtes Prozentzeichen in ihrem Namen hatten. Eigentlich habe ich in diesem Fall nach einem ganz bestimmten Katzennamen gesucht – einem, der mit 100%F beginnt .

Wenn ich dem nicht entgangen wäre, wäre es als Platzhalter verwendet worden, und die Ergebnisse wären anders ausgefallen.

Folgendes bekomme ich, wenn ich das Escape-Zeichen entferne.

SELECT * FROM Cats 
WHERE like('100%F%', CatName);

Ergebnis:

CatId       CatName   
----------  ----------
3           100%Fluff 
4           100$Fluff 

Gib einen booleschen Wert zurück

Sie können das like() verwenden Funktion, um eine 0 zurückzugeben oder 1 , abhängig davon, ob es eine Übereinstimmung gibt oder nicht.

Dies kann praktisch sein, wenn Sie alle Zeilen zurückgeben müssen, aber auch mit einem Flag, das anzeigt, ob sie Ihren Kriterien entsprechen oder nicht.

Hier ist ein Beispiel.

SELECT 
  CatName,
  like('F%', CatName) 
FROM Cats;

Ergebnis:

CatName     CatName LIKE 'F%'
----------  ------------------
Brush       0                 
Flutter     1                 
100%Fluff   0                 
100$Fluff   0                 

In diesem Fall entsprach nur eine Zeile den Kriterien, aber wir konnten trotzdem alle anderen Zeilen sehen.

Groß- und Kleinschreibung

Standardmäßig ist die SQLite like() Die Funktion berücksichtigt bei ASCII-Zeichen die Groß-/Kleinschreibung nicht. 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. Dieser Artikel wurde für LIKE geschrieben Operator, aber es gilt auch für like() Funktion.