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

Cómo funciona el operador LIKE en SQLite

En SQLite, puede usar LIKE operador en sus consultas para hacer una comparación de coincidencia de patrones.

Por ejemplo, puede agregarlo a su WHERE cláusula para devolver solo filas que coincidan con un patrón dado.

Sin embargo, agregarlo a WHERE La cláusula no es la única forma en que puede usar LIKE operador. También puede usarlo para devolver un valor booleano.

Ejemplo básico

Aquí hay un ejemplo básico que usa LIKE operador en un WHERE cláusula.

SELECT * FROM Artist
WHERE Name LIKE 'Black%';

Resultado:

ArtistId    Name               
----------  -------------------
11          Black Label Society
12          Black Sabbath      
169         Black Eyed Peas    

En este caso, quería devolver a todos los artistas cuyos nombres comienzan con Black .

El signo de porcentaje es un carácter comodín que coincide con cero o más de cualquier carácter (incluidos los espacios).

Sin el comodín

Si no hubiera usado el carácter comodín, no habría obtenido ningún resultado.

He aquí un ejemplo de lo que quiero decir:

SELECT * FROM Artist
WHERE Name LIKE 'Black';

Resultado:

 

(Eso está intencionalmente en blanco, porque no hubo resultados).

Múltiples comodines

Puede utilizar más de un carácter comodín si es necesario. En este ejemplo, agrego otro al frente de mi patrón.

SELECT * FROM Artist
WHERE Name LIKE '%Black%';

Resultado:

ArtistId    Name               
----------  -------------------
11          Black Label Society
12          Black Sabbath      
38          Banda Black Rio    
137         The Black Crowes   
169         Black Eyed Peas    

Esto da como resultado que se devuelvan más filas, porque hay dos filas que tienen Negro en su nombre, pero no al principio.

El guión bajo (_) comodín

También tiene la opción de usar el guión bajo (_ ) comodín.

Este carácter comodín coincide exactamente con un carácter (cualquier carácter).

Considere la siguiente tabla llamada Cats :

CatId       CatName   
----------  ----------
1           Brush     
2           Brash     
3           Broosh    
4           100%Fluff 
5           100$Fluff 

Sí, algunos de esos gatos tienen nombres extraños, pero serán útiles.

Este es un ejemplo del uso del comodín de subrayado en una consulta en esa tabla.

SELECT * FROM Cats
WHERE CatName LIKE 'Br_sh';

Resultado:

CatId       CatName   
----------  ----------
1           Brush     
2           Brash       

Observe que el gato llamado Broosh no está incluido.

Para incluir Broosh , necesitaría usar dos guiones bajos:

SELECT * FROM Cats
WHERE CatName LIKE 'Br__sh';

Resultado:

CatId       CatName   
----------  ----------
3           Broosh       

Sin embargo, esto excluye a los otros dos gatos.

Siempre podría usar un signo de porcentaje para incluir a los otros gatos.

SELECT * FROM Cats
WHERE CatName LIKE 'Br%sh';

Resultado:

CatId       CatName   
----------  ----------
1           Brush     
2           Brash     
3           Broosh      

Aunque tenga en cuenta que esto también devolvería nombres con más de dos caracteres entre Br y sh .

La cláusula de ESCAPE

A veces, sus datos pueden incluir los caracteres comodín. En otras palabras, los datos contienen guiones bajos o signos de porcentaje.

Esto podría ser un problema si realmente está tratando de hacer coincidir el guión bajo o el signo de porcentaje como un carácter literal y no como un comodín.

En mi tabla de gatos, notará que un gato tiene un signo de porcentaje en su nombre. Otro gato tiene casi exactamente el mismo nombre, excepto que, en lugar de un signo de porcentaje, es un signo de dólar.

Aquí está la tabla de nuevo:

CatId       CatName   
----------  ----------
1           Brush     
2           Brash     
3           Broosh    
4           100%Fluff 
5           100$Fluff 

Si quisiera devolver solo aquellos gatos cuyos nombres comienzan con 100%F entonces necesitaría escapar del % . Si no me escapaba de esto, obtendría resultados no deseados.

Esto es lo que sucede si ejecuto una consulta sin escapando del signo de porcentaje.

SELECT * FROM Cats
WHERE CatName LIKE '100%F';

Resultado:

CatId       CatName   
----------  ----------
4           100%Fluff 
5           100$Fluff 

En este caso, el signo de porcentaje también coincidía con el signo de dólar, porque el signo de porcentaje se trataba como un carácter comodín.

Para asegurarnos de que el signo de porcentaje no se trate como un carácter comodín, podemos usar el ESCAPE cláusula.

SELECT * FROM Cats
WHERE CatName LIKE '100\%%F' ESCAPE '\';

Resultado:

CatId       CatName   
----------  ----------
4           100%Fluff 

Devolver un valor booleano

Puedes usar el LIKE operador para devolver un 0 o 1 , dependiendo de si hay una coincidencia o no.

He aquí un ejemplo.

SELECT 
  CatName,
  CatName LIKE 'Br%' 
FROM Cats;

Resultado:

CatName     CatName LIKE 'Br%'
----------  ------------------
Brush       1                 
Brash       1                 
Broosh      1                 
100%Fluff   0                 
100$Fluff   0                 

En este caso, las tres primeras filas coinciden con los criterios y las dos últimas filas no.

Sensible a mayúsculas y minúsculas

De forma predeterminada, SQLite LIKE El operador no distingue entre mayúsculas y minúsculas para los caracteres ASCII. Esto significa que coincidirá con los caracteres en mayúsculas y minúsculas, independientemente de las mayúsculas y minúsculas que utilice en su patrón.

Puede usar el case_Sensible_like Declaración PRAGMA para realizar coincidencias entre mayúsculas y minúsculas en el rango ASCII.

Consulte Cómo hacer que el operador LIKE de SQLite distinga entre mayúsculas y minúsculas para ver ejemplos.

Función Me gusta()

Una forma alternativa de hacerlo es usar like() función.

Esta función hace exactamente lo mismo que LIKE operador, excepto que necesita usar una sintaxis ligeramente diferente.

Todos los ejemplos anteriores podrían reescribirse para usar like() función si es necesario.