Hier sind drei Optionen zum Zurückgeben von Zeilen, die Kleinbuchstaben in SQLite enthalten.
Beispieldaten
Angenommen, wir haben eine Tabelle mit den folgenden Daten:
.nullvalue null
SELECT c1 FROM t1;
Ergebnis:
c1 -------------- CAFÉ Café café 1café eCafé James Bond 007 JB 007 007 null É É 123 é é 123 ø Ø
Wir können die folgenden Methoden verwenden, um die Zeilen zurückzugeben, die Kleinbuchstaben enthalten.
Option 1:Mit UPPER()
vergleichen Zeichenkette
Wir können den UPPER()
verwenden Funktion, um den ursprünglichen Wert mit seinem Äquivalent in Großbuchstaben zu vergleichen:
SELECT c1 FROM t1
WHERE UPPER(c1) <> c1;
Ergebnis:
c1 -------------- Café café 1café eCafé James Bond 007
Durch die Verwendung von ungleich (<>
) Operator (Sie können alternativ !=
verwenden statt <>
Wenn Sie möchten), geben wir nur die Zeilen zurück, die sich von ihren Äquivalenten in Großbuchstaben unterscheiden. Der Grund dafür ist, dass, wenn ein Wert mit seinem Äquivalent in Großbuchstaben identisch ist, er bereits von Anfang an in Großbuchstaben war (und wir ihn nicht zurückgeben möchten).
SQLite führt eine Suche mit Berücksichtigung der Groß-/Kleinschreibung durch, sodass wir nichts weiter tun müssen, um das gewünschte Ergebnis zu erhalten.
Sie haben vielleicht bemerkt, dass das obige Beispiel die kleinen Unicode-Zeichen é
nicht zurückgegeben hat und ø
es sei denn, der Wert enthielt auch einen Nicht-Unicode-Kleinbuchstaben. SQLite unterstützt Unicode-Zeichen nicht vollständig. Zum Beispiel UPPER()
und LOWER()
Die Funktionen bieten nur eine Fallzuordnung für die 26 Buchstaben, die in der englischen Sprache verwendet werden. Daher wurden im obigen Beispiel keine Unicode-Zeichen in ihre Entsprechung in Großbuchstaben umgewandelt.
Werfen Sie einen Blick auf die SQLite ICU-Erweiterung, wenn Sie mit Unicode-Zeichen arbeiten müssen.
Option 2:Mit den tatsächlichen Zeichen vergleichen
Eine andere Möglichkeit ist die Verwendung des REGEXP
Operator mit einem regulären Ausdrucksmuster, das explizit alle Kleinbuchstaben enthält, die wir abgleichen möchten:
SELECT c1 FROM t1
WHERE c1 REGEXP '[abcdefghijklmnopqrstuvwxyz]';
Ergebnis:
c1 -------------- Café café 1café eCafé James Bond 007
Auf Wunsch können wir Unicode-Zeichen in unsere Liste aufnehmen:
SELECT c1 FROM t1
WHERE c1 REGEXP '[éøabcdefghijklmnopqrstuvwxyz]';
Ergebnis:
c1 -------------- Café café 1café eCafé James Bond 007 é é 123 ø
Option 3:Mit einem Zeichenbereich vergleichen
Eine andere Möglichkeit besteht darin, den Bereich der Kleinbuchstaben anzugeben, die wir abgleichen möchten:
SELECT c1 FROM t1
WHERE c1 REGEXP '[a-z]';
Ergebnis:
c1 -------------- Café café 1café eCafé James Bond 007