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ónY
es la cadenaZ
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.