Resumo : neste tutorial, você aprenderá como consultar dados com base na correspondência de padrões usando LIKE
o operador SQLite.
LIKE
Introdução ao operador SQLite
Às vezes, você não sabe exatamente a palavra-chave completa que deseja consultar. Por exemplo, você pode saber que sua música favorita contém a palavra, elevator
mas não sabe exatamente o nome.
Para consultar dados com base em informações parciais, use o LIKE
operador na WHERE
cláusula da SELECT
instrução da seguinte forma:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que você também pode usar o LIKE
operador na WHERE
cláusula de outras instruções, como DELETE
and UPDATE
.
SQLite fornece dois curingas para construção de padrões. Eles são sinal de porcentagem %
e sublinhado _
:
- O
%
curinga do sinal de porcentagem corresponde a qualquer sequência de zero ou mais caracteres. - O
_
curinga de sublinhado corresponde a qualquer caractere único.
%
Exemplos de caracteres curinga com sinal de porcentagem
O s%
padrão que usa o curinga do sinal de porcentagem ( %
) corresponde a qualquer string que comece com s
, por exemplo, son
e so
.
O %er
padrão corresponde a qualquer string que termine com er
like peter
, clever
, etc.
E o %per%
padrão corresponde a qualquer string que contenha per
como percent
e peeper
.
Os _
exemplos de curinga de sublinhado
O h_nt
padrão corresponde a hunt
, hint
, etc. O __pple
padrão corresponde a topple
, supple
, tipple
, etc.
Observe que o operador SQLite LIKE
não diferencia maiúsculas de minúsculas. Significa que "A" LIKE "a"
é verdade.
No entanto, para caracteres Unicode que não estão nos intervalos ASCII, o LIKE
operador diferencia maiúsculas de minúsculas, por exemplo, "Ä" LIKE "ä"
é falso.
Caso você queira fazer com que LIKE
o operador funcione com distinção entre maiúsculas e minúsculas, você precisa usar o seguinte PRAGMA :
PRAGMA case_sensitive_like = true;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
LIKE
Exemplos de SQLite
Usaremos a tabela tracks
do banco de dados de exemplo para a demonstração.
Para encontrar as faixas cujos nomes começam com a Wild
string literal, use o %
caractere curinga do sinal de porcentagem no final do padrão.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para encontrar as faixas cujos nomes terminam com Wild
palavra, use %
curinga no início do padrão.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para encontrar as faixas cujos nomes contêm a Wild
string literal, você usa %
curinga no início e no final do padrão:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução a seguir encontra as faixas cujos nomes contêm: zero ou mais caracteres (%
), seguido por Br
, seguido por um caractere ( _
), seguido por wn
, e seguido por zero ou mais caracteres ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
SQLite LIKE
com ESCAPE
cláusula
Se o padrão que você deseja corresponder contiver %
ou _
, você deverá usar um caractere de escape em uma ESCAPE
cláusula opcional como a seguir:
column_1 LIKE pattern ESCAPE expression;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quando você especifica a ESCAPE
cláusula, o LIKE
operador avaliará o expression
que segue a ESCAPE
palavra-chave como uma string que consiste em um único caractere ou um caractere de escape.
Em seguida, você pode usar esse caractere de escape no padrão para incluir sinal de porcentagem literal (%) ou sublinhado ( _
). O LIKE
operador avalia o sinal de porcentagem ( %
) ou sublinhado ( _
) que segue o caractere de escape como uma sequência literal, não como um caractere curinga.
Suponha que você queira corresponder a string 10%
em uma coluna de uma tabela. No entanto, o SQLite interpreta o símbolo de porcentagem %
como um caractere curinga. Portanto, você precisa escapar deste símbolo de porcentagem %
usando um caractere de escape:
column_1 LIKE '%10\%%' ESCAPE '\';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta expressão, o LIKE
operador interpreta o primeiro sinal de % e o último sinal de % como curingas e o segundo sinal de porcentagem como um símbolo literal de porcentagem.
Observe que você pode usar outros caracteres como caractere de escape, por exemplo, /, @, $.
Considere o seguinte exemplo:
Primeiro, crie uma tabela t
que tenha uma coluna:
CREATE TABLE t(
c TEXT
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A seguir, insira algumas linhas na tabela t
:
INSERT INTO t(c)
VALUES('10% increase'),
('10 times decrease'),
('100% vs. last year'),
('20% increase next year');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em seguida, consulte os dados da t
tabela:
SELECT * FROM t;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
c
----------------------
10% increase
10 times decrease
100% vs. last year
20% increase next year
Linguagem de código: Sessão Shell ( shell )
Quarto, tente encontrar a linha cujo valor na c
coluna contém a 10%
string literal:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
No entanto, ele retorna linhas cujos valores na coluna c contêm 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Quinto, para obter o resultado correto, você usa a ESCAPE
cláusula mostrada na consulta a seguir:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está o conjunto de resultados:
c
------------
10% increase
Linguagem de código: Sessão Shell ( shell )
Neste tutorial, você aprendeu como usar LIKE
o operador SQLite para consultar dados com base na correspondência de padrões usando dois caracteres curinga, sinal de porcentagem ( %
) e sublinhado ( _
).