SQLite
 sql >> Base de données >  >> RDS >> SQLite

3 façons de trouver des lignes contenant des lettres minuscules dans SQLite

Voici trois options pour renvoyer des lignes contenant des caractères minuscules dans SQLite.

Exemple de données

Supposons que nous ayons un tableau avec les données suivantes :

.nullvalue null
SELECT c1 FROM t1;

Résultat :

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

Nous pouvons utiliser les méthodes suivantes pour renvoyer les lignes contenant des lettres minuscules.

Option 1 : Comparer avec UPPER() Chaîne

Nous pouvons utiliser le UPPER() fonction pour comparer la valeur d'origine à son équivalent en majuscule :

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

Résultat :

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

En utilisant le différent de (<> ) opérateur (vous pouvez également utiliser != au lieu de <> si vous préférez), nous renvoyons uniquement les lignes qui sont différentes de leurs équivalents en majuscules. La raison pour laquelle nous faisons cela est que, si une valeur est identique à son équivalent en majuscule, alors elle était déjà en majuscule au départ (et nous ne voulons pas la renvoyer).

SQLite effectue une recherche sensible à la casse, et nous n'avons donc rien d'autre à faire pour obtenir le résultat souhaité.

Vous avez peut-être remarqué que l'exemple ci-dessus ne renvoyait pas les caractères Unicode minuscules é et ø à moins que la valeur ne comprenne également une lettre minuscule non unicode. SQLite ne prend pas entièrement en charge les caractères Unicode. Par exemple, le UPPER() et LOWER() Les fonctions fournissent uniquement un mappage de casse pour les 26 lettres utilisées dans la langue anglaise. Par conséquent, l'exemple ci-dessus n'a converti aucun caractère unicode en leur équivalent majuscule.

Jetez un œil à l'extension SQLite ICU si vous avez besoin de travailler avec des caractères Unicode.

Option 2 : Comparer avec les caractères réels

Une autre option consiste à utiliser le REGEXP opérateur avec un modèle d'expression régulière qui inclut explicitement chaque caractère minuscule que nous voulons faire correspondre :

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

Résultat :

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

Nous pouvons inclure des caractères unicode dans notre liste si nous le souhaitons :

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

Résultat :

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

Option 3 :Comparer à une plage de caractères

Une autre façon de le faire est de spécifier la plage de caractères minuscules que nous voulons faire correspondre :

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

Résultat :

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