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

Función SQLite Like() con ejemplos

El SQLite like() La función le permite comparar una cadena con un patrón dado. También puede especificar un carácter de escape si es necesario.

Puedes usar el like() función como alternativa al LIKE operador (que le permite ejecutar el Y LIKE X [ESCAPE Z] expresión).

Sintaxis

Puede usar cualquiera de los siguientes:

like(X,Y)
like(X,Y,Z)
  • X es el patrón
  • Y es la cadena
  • Z es un carácter de escape opcional

Ejemplo básico

Tome la siguiente tabla:

CatId       CatName   
----------  ----------
1           Brush     
2           Flutter   
3           100%Fluff 
4           100$Fluff 

Podemos ejecutar el siguiente código para devolver todas las filas donde el nombre del gato comienza con la letra F:

SELECT * FROM Cats 
WHERE like('F%', CatName);

Resultado:

CatId       CatName   
----------  ----------
3           Flutter   

En este ejemplo, utilicé el % carácter comodín para indicar que podría seguir cualquier número de caracteres (incluidos cero caracteres) y que pueden ser cualquier carácter.

El carácter de subrayado (_)

Aquí hay un ejemplo que usa el guión bajo (_ ) personaje. Este carácter comodín coincide exactamente con un carácter, ni más ni menos.

SELECT * FROM Cats 
WHERE like('Br_sh', CatName);

Resultado:

CatId       CatName   
----------  ----------
1           Brush     

Como se mencionó, solo coincide con un solo carácter. Entonces, según mis datos, no puedo hacer lo siguiente y esperar coincidencias.

SELECT * FROM Cats 
WHERE like('Br_', CatName);

Resultado:

 

(Esto está intencionalmente en blanco debido a que no hay resultados).

Personajes de escape

También puede escapar caracteres si es necesario. Para hacer esto, agregue el carácter de escape como tercer parámetro (y también agréguelo antes del carácter que desea escapar).

SELECT * FROM Cats 
WHERE like('100\%F%', CatName, '\');

Resultado:

CatId       CatName   
----------  ----------
3           100%Fluff 

En este caso escapé del signo de porcentaje (% ). Hice esto porque estaba buscando gatos que tuvieran un signo de porcentaje real en sus nombres. De hecho, en este caso estaba buscando un nombre de gato muy específico, uno que comience con 100%F .

Si no hubiera escapado de eso, se habría utilizado como comodín y los resultados habrían sido diferentes.

Esto es lo que obtengo cuando elimino el carácter de escape.

SELECT * FROM Cats 
WHERE like('100%F%', CatName);

Resultado:

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

Devolver un valor booleano

Puedes usar el like() función para devolver un 0 o 1 , dependiendo de si hay una coincidencia o no.

Esto puede ser útil si necesita devolver todas las filas, pero también con una marca que muestra si coinciden o no con sus criterios.

He aquí un ejemplo.

SELECT 
  CatName,
  like('F%', CatName) 
FROM Cats;

Resultado:

CatName     CatName LIKE 'F%'
----------  ------------------
Brush       0                 
Flutter     1                 
100%Fluff   0                 
100$Fluff   0                 

En este caso, solo una fila coincidía con los criterios, pero aun así pudimos ver todas las demás filas.

Sensible a mayúsculas y minúsculas

De forma predeterminada, SQLite like() La función 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. Ese artículo está escrito para LIKE operador, pero también se aplica al like() función.