SQLite
 sql >> Database >  >> RDS >> SQLite

3 modi per trovare righe che contengono lettere minuscole in SQLite

Ecco tre opzioni per restituire righe che contengono caratteri minuscoli in SQLite.

Dati campione

Supponiamo di avere una tabella con i seguenti dati:

.nullvalue null
SELECT c1 FROM t1;

Risultato:

c1            
--------------
CAFÉ          
Café          
café          
1café         
eCafé         
James Bond 007
JB 007        
007           
null          
              
É             
É 123         
é             
é 123         
ø             
Ø             

Possiamo usare i seguenti metodi per restituire le righe che contengono lettere minuscole.

Opzione 1:confronta con UPPER() Stringa

Possiamo usare UPPER() funzione per confrontare il valore originale con il suo equivalente maiuscolo:

SELECT c1 FROM t1
WHERE UPPER(c1) <> c1;

Risultato:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007

Utilizzando il diverso a (<> ) operatore (puoi in alternativa usare != invece di <> se preferisci), restituiamo solo quelle righe che sono diverse dai loro equivalenti maiuscoli. Il motivo per cui lo facciamo è perché, se un valore è uguale al suo equivalente maiuscolo, all'inizio era già maiuscolo (e non vogliamo restituirlo).

SQLite esegue una ricerca con distinzione tra maiuscole e minuscole, quindi non abbiamo bisogno di fare nient'altro per ottenere il risultato che desideriamo.

Potresti aver notato che l'esempio sopra non ha restituito i caratteri unicode minuscoli é e ø a meno che il valore non includa anche una lettera minuscola non Unicode. SQLite non supporta completamente i caratteri Unicode. Ad esempio, il UPPER() e LOWER() le funzioni forniscono solo la mappatura dei casi per le 26 lettere utilizzate nella lingua inglese. Pertanto, l'esempio sopra non ha convertito i caratteri Unicode nel loro equivalente maiuscolo.

Dai un'occhiata all'estensione ICU di SQLite se hai bisogno di lavorare con i caratteri Unicode.

Opzione 2:confronta con i caratteri reali

Un'altra opzione è usare il REGEXP operatore con un modello di espressione regolare che include esplicitamente ogni carattere minuscolo che vogliamo abbinare:

SELECT c1 FROM t1
WHERE c1 REGEXP '[abcdefghijklmnopqrstuvwxyz]';

Risultato:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007

Possiamo includere caratteri Unicode nel nostro elenco se lo desideriamo:

SELECT c1 FROM t1
WHERE c1 REGEXP '[éøabcdefghijklmnopqrstuvwxyz]';

Risultato:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007
é             
é 123         
ø             

Opzione 3:confronta con un intervallo di caratteri

Un altro modo per farlo è specificare l'intervallo di caratteri minuscoli che vogliamo abbinare:

SELECT c1 FROM t1
WHERE c1 REGEXP '[a-z]';

Risultato:

c1            
--------------
Café          
café          
1café         
eCafé         
James Bond 007