Hier sind drei Optionen zum Zurückgeben von Zeilen, die in SQLite Großbuchstaben 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 Großbuchstaben enthalten.
Option 1:Vergleichen Sie mit LOWER()
Zeichenkette
Wir können den LOWER()
verwenden Funktion, um den ursprünglichen Wert mit seinem Äquivalent in Kleinbuchstaben zu vergleichen:
SELECT c1 FROM t1
WHERE LOWER(c1) <> c1;
Ergebnis:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 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 Kleinbuchstaben-Äquivalenten unterscheiden. Der Grund dafür ist, dass, wenn ein Wert mit seinem kleingeschriebenen Äquivalent identisch ist, er bereits von Anfang an kleingeschrieben 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 Unicode-Großbuchstaben É
nicht zurückgegeben hat und Ø
es sei denn, der Wert enthielt auch einen Nicht-Unicode-Großbuchstaben. SQLite unterstützt Unicode-Zeichen nicht vollständig. Zum Beispiel LOWER()
und UPPER()
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 Kleinbuchstaben 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 jeden Großbuchstaben enthält, den wir abgleichen möchten:
SELECT c1 FROM t1
WHERE c1 REGEXP '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]';
Ergebnis:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 007
Auf Wunsch können wir Unicode-Zeichen in unsere Liste aufnehmen:
SELECT c1 FROM t1
WHERE c1 REGEXP '[ÉØABCDEFGHIJKLMNOPQRSTUVWXYZ]';
Ergebnis:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 007 É É 123 Ø
Option 3:Mit einer Reihe von Zeichen vergleichen
Eine andere Möglichkeit besteht darin, den Bereich der Großbuchstaben anzugeben, die wir abgleichen möchten:
SELECT c1 FROM t1
WHERE c1 REGEXP '[A-Z]';
Ergebnis:
c1 -------------- CAFÉ Café eCafé James Bond 007 JB 007