SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Função SQLite Like() com exemplos


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ão
  • Y é a string
  • Z é 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.