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

SQLite LIKE


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 _ :
  1. O sinal de porcentagem % curinga corresponde a qualquer sequência de zero ou mais caracteres.
  2. 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 yearCode 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% increaseCode 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 (_ ).