O SQLite
like()
A função permite comparar uma string com um determinado padrão. Você também pode especificar um caractere de escape, se necessário. Você pode usar o
like()
função como uma alternativa ao LIKE
operador (que permite executar o Y LIKE X [ESCAPE Z]
expressão). Sintaxe
Você pode usar um dos seguintes:
like(X,Y)
like(X,Y,Z)
X
é o padrãoY
é a stringZ
é um caractere de escape opcional
Exemplo básico
Pegue a seguinte tabela:
CatId CatName ---------- ---------- 1 Brush 2 Flutter 3 100%Fluff 4 100$Fluff
Podemos executar o seguinte código para retornar todas as linhas onde o nome do gato começa com a letra F:
SELECT * FROM Cats
WHERE like('F%', CatName);
Resultado:
CatId CatName ---------- ---------- 3 Flutter
Neste exemplo, usei o
%
caractere curinga para indicar que qualquer número de caracteres pode seguir (incluindo zero caracteres) e que eles podem ser qualquer caractere. O caractere sublinhado (_)
Aqui está um exemplo que usa o sublinhado (
_
) personagem. Este caractere curinga corresponde exatamente a um caractere – nem mais, nem menos. SELECT * FROM Cats
WHERE like('Br_sh', CatName);
Resultado:
CatId CatName ---------- ---------- 1 Brush
Como mencionado, ele corresponde apenas a um único caractere. Portanto, com base nos meus dados, não posso fazer o seguinte e esperar correspondências.
SELECT * FROM Cats
WHERE like('Br_', CatName);
Resultado:
(Isso está intencionalmente em branco devido à ausência de resultados).
Caracteres de escape
Você também pode escapar caracteres, se necessário. Para fazer isso, adicione o caractere de escape como um terceiro parâmetro (e também o adicione antes do caractere que você deseja escapar).
SELECT * FROM Cats
WHERE like('100\%F%', CatName, '\');
Resultado:
CatId CatName ---------- ---------- 3 100%Fluff
Neste caso eu escapei do sinal de porcentagem (
%
). Fiz isso porque estava procurando gatos que tivessem um sinal de porcentagem real em seus nomes. Na verdade, neste caso eu estava procurando por um nome de gato muito específico – um que comece com 100%F . Se eu não tivesse escapado disso, teria sido usado como curinga e os resultados teriam sido diferentes.
Aqui está o que recebo quando removo o caractere de escape.
SELECT * FROM Cats
WHERE like('100%F%', CatName);
Resultado:
CatId CatName ---------- ---------- 3 100%Fluff 4 100$Fluff
Retorne um valor booleano
Você pode usar o
like()
função para retornar um 0 ou 1 , dependendo se há uma correspondência ou não. Isso pode ser útil se você precisar retornar todas as linhas, mas também com um sinalizador que mostra se elas correspondem ou não aos seus critérios.
Aqui está um exemplo.
SELECT
CatName,
like('F%', CatName)
FROM Cats;
Resultado:
CatName CatName LIKE 'F%' ---------- ------------------ Brush 0 Flutter 1 100%Fluff 0 100$Fluff 0
Nesse caso, apenas uma linha correspondeu aos critérios, mas ainda conseguimos ver todas as outras linhas.
Sensibilidade a maiúsculas e minúsculas
Por padrão, o SQLite
like()
função não diferencia maiúsculas de minúsculas para caracteres ASCII. Isso significa que ele corresponderá a caracteres maiúsculos e minúsculos, independentemente de qual maiúscula você usa em seu padrão. Você pode usar o case_sensitive_like Instrução PRAGMA para realizar correspondências que diferenciam maiúsculas de minúsculas no intervalo ASCII.
Veja Como tornar o operador LIKE do SQLite sensível a maiúsculas e minúsculas para obter exemplos. Esse artigo foi escrito para o
LIKE
operador, mas também se aplica ao like()
função.