sql >> Base de Datos >  >> RDS >> SQLite

3 formas de encontrar filas que contienen letras minúsculas en SQLite

Aquí hay tres opciones para devolver filas que contienen caracteres en minúsculas en SQLite.

Datos de muestra

Supongamos que tenemos una tabla con los siguientes datos:

.nullvalue null
SELECT c1 FROM t1;

Resultado:

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

Podemos usar los siguientes métodos para devolver las filas que contienen letras minúsculas.

Opción 1:Comparar con UPPER() Cadena

Podemos usar UPPER() función para comparar el valor original con su equivalente en mayúsculas:

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

Resultado:

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

Usando el no igual a (<> ) operador (alternativamente, puede usar != en lugar de <> si lo prefiere), solo devolvemos aquellas filas que son diferentes a sus equivalentes en mayúsculas. La razón por la que hacemos esto es porque, si un valor es igual a su equivalente en mayúsculas, para empezar ya estaba en mayúsculas (y no queremos devolverlo).

SQLite realiza una búsqueda que distingue entre mayúsculas y minúsculas, por lo que no necesitamos hacer nada más para obtener el resultado que deseamos.

Es posible que haya notado que el ejemplo anterior no devolvió los caracteres Unicode en minúsculas é y ø a menos que el valor también incluya una letra minúscula que no sea Unicode. SQLite no admite completamente los caracteres Unicode. Por ejemplo, UPPER() y LOWER() Las funciones solo proporcionan mapeo de casos para las 26 letras utilizadas en el idioma inglés. Por lo tanto, el ejemplo anterior no convirtió ningún carácter Unicode a su equivalente en mayúsculas.

Eche un vistazo a la extensión ICU de SQLite si necesita trabajar con caracteres Unicode.

Opción 2:Comparar con los caracteres reales

Otra opción es usar el REGEXP operador con un patrón de expresión regular que incluye explícitamente cada carácter en minúscula que queremos hacer coincidir:

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

Resultado:

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

Podemos incluir caracteres Unicode en nuestra lista si lo deseamos:

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

Resultado:

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

Opción 3:Comparar con un rango de caracteres

Otra forma de hacerlo es especificar el rango de caracteres en minúsculas que queremos hacer coincidir:

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

Resultado:

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