Problema:
Você gostaria de encontrar uma substring que corresponda a um padrão em uma string.
Exemplo:
Nosso banco de dados possui uma tabela chamada cliente com dados nas seguintes colunas:
id
, first_name
, last_name
, e city
. id | first_name | last_name | cidade |
---|---|---|---|
1 | Alan | Watson | Madri |
2 | Lisa | Preto | Cingapura |
3 | Laura | Williams | Seattle |
4 | Milão | Tijolo | Seul |
Vamos ver alguns exemplos de correspondência de padrões em SQL.
Exemplo 1:
Vamos exibir o nome, sobrenome e cidade de cada cliente cujo nome da cidade começa com a letra 'S'.
Solução:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
last_name | first_name | cidade |
---|---|---|
Lisa | Preto | S Ingapore |
Milão | Tijolo | S eul |
Laura | Williams | S peludo |
Usamos o curinga %, que representa zero ou mais caracteres desconhecidos. Este curinga pode ser usado em qualquer lugar na string.
Exemplo 2:
Vamos mostrar o nome, sobrenome e cidade de cada cliente cujo nome da cidade contém exatamente cinco caracteres.
Solução:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Aqui está o resultado:
last_name | first_name | cidade |
---|---|---|
Milão | Tijolo | Seul |
O curinga de sublinhado pode ser usado para representar um único caractere desconhecido. Assim, usando cinco delas seguidas, podemos representar todas as strings com cinco caracteres. Em nosso exemplo, a única cidade que corresponde a essa descrição é Seul.
Exemplo 3:
Vamos mostrar o nome, sobrenome e cidade de cada cliente cuja cidade começa com a letra 'S' e tem a letra 'o' como o penúltimo caractere.
Solução:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Aqui está o resultado:
last_name | first_name | cidade |
---|---|---|
Lisa | Preto | S ingapo re |
Milão | Tijolo | S eo ul |
A consulta retornou apenas dois registros:Lisa Black de S ingapo re e Milan Brick de S eo ul. Essas cidades correspondem ao padrão fornecido. Aqui, combinamos os dois curingas para gerar um padrão mais específico:todas as strings começando com uma letra maiúscula 'S' e contendo qualquer número de outros caracteres depois disso, desde que o penúltimo caractere seja uma letra minúscula 'o. '
Discussão:
Se você deseja selecionar registros nos quais uma string corresponde a um padrão específico, você pode usar um
LIKE
cláusula como a condição em um WHERE
cláusula. Depois de WHERE
, liste o nome da coluna (por exemplo, city
) seguido por um LIKE
cláusula especificando o padrão de string (por exemplo, 'S%o__'
) procurar por. Como vimos nos exemplos, você pode usar dois caracteres especiais conhecidos como curingas para representar caracteres desconhecidos:
- O curinga '%' indica zero ou mais caracteres.
- O curinga '_' denota qualquer caractere único.
Você pode combinar esses curingas para obter alguns resultados realmente poderosos. Você também pode encadear mais de um
LIKE
doença. Finalmente, você pode usar o NOT
operador para encontrar strings que não corresponder ao padrão fornecido.