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

3 Möglichkeiten, Zeilen zu finden, die Großbuchstaben in SQLite enthalten

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