Resumo :neste tutorial, você aprenderá a consultar dados com base na correspondência de padrões usando SQLite
LIKE
operador. Introdução ao SQLite LIKE
operador
À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 você não sabe exatamente o nome. Para consultar dados com base em informações parciais, você usa o
LIKE
operador no WHERE
cláusula do SELECT
declaração da seguinte forma:SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Observe que você também pode usar o
LIKE
operador no WHERE
cláusula de outras instruções como a DELETE
e UPDATE
. SQLite fornece dois curingas para construir padrões. Eles são o sinal de porcentagem
%
e sublinhar _
:- O sinal de porcentagem
%
curinga corresponde a qualquer sequência de zero ou mais caracteres. - O sublinhado
_
curinga corresponde a qualquer caractere único.
O sinal de porcentagem %
exemplos de curingas
O
s%
padrão que usa o caractere 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
como peter
, clever
, etc E o
%per%
padrão corresponde a qualquer string que contenha per
como percent
e peeper
. O sublinhado _
exemplos de curingas
O
h_nt
padrão corresponde a hunt
, hint
, etc. O __pple
padrão corresponde a topple
, supple
, tipple
, etc Observe que SQLite
LIKE
operador não diferencia maiúsculas de minúsculas. Significa "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
LIKE
operador funciona com distinção entre maiúsculas e minúsculas, você precisa usar o seguinte PRAGMA:PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
exemplos
Usaremos a tabela
tracks
no banco de dados de exemplo para a demonstração. Para encontrar as faixas cujos nomes começam com
Wild
string literal, você usa o sinal de porcentagem %
curinga no final do padrão. SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Tente
Para encontrar as faixas cujos nomes terminam com
Wild
palavra, você usa %
curinga no início do padrão. SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Tente
Para encontrar as faixas cujos nomes contêm o
Wild
string literal, você usa %
curinga no início e no final do padrão:SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Tente
A seguinte instrução 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%';
Code language: SQL (Structured Query Language) (sql)
Tente
SQLite LIKE
com ESCAPE
cláusula
Se o padrão que você deseja corresponder contiver
%
ou _
, você deve usar um caractere de escape em um ESCAPE
opcional cláusula da seguinte forma:column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Quando você especifica o
ESCAPE
cláusula, a LIKE
operador avaliará a expression
que segue o ESCAPE
palavra-chave para uma string que consiste em um único caractere ou um caractere de escape. Então você pode usar este caractere de escape no padrão para incluir o sinal de porcentagem literal (%) ou sublinhado (
_
). O LIKE
operador avalia o sinal de porcentagem (%
) ou sublinhado (_
) que segue o caractere de escape como uma string literal, não como um caractere curinga. Suponha que você queira combinar a string
10%
em uma coluna de uma tabela. No entanto, o SQLite interpreta o símbolo de porcentagem %
como o caractere curinga. Portanto, você precisa escapar deste símbolo de porcentagem %
usando um caractere de escape:column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Nesta expressão, o
LIKE
O operador interpreta o primeiro % e o último % sinais de porcentagem 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 tem uma coluna:CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Em seguida, insira algumas linhas na tabela
t
:INSERT INTO t(c)
VALUES('10% increase'),
('10 times decrease'),
('100% vs. last year'),
('20% increase next year');
Code language: SQL (Structured Query Language) (sql)
Em seguida, consulte os dados do
t
tabela:SELECT * FROM t;
Code language: SQL (Structured Query Language) (sql)
c
----------------------
10% increase
10 times decrease
100% vs. last year
20% increase next year
Code language: Shell Session (shell)
Quarto, tente encontrar a linha cujo valor no
c
coluna contém os 10%
seqüência literal:SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (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 o
ESCAPE
cláusula conforme mostrado na consulta a seguir:SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Aqui está o conjunto de resultados:
c
------------
10% increase
Code language: Shell Session (shell)
Neste tutorial, você aprendeu como usar SQLite
LIKE
operador para consultar dados com base na correspondência de padrões usando dois caracteres curinga sinal de porcentagem (%
) e sublinhado (_
).