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

3 Möglichkeiten, Zeilen zu finden, die Kleinbuchstaben in SQLite enthalten

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