LIKE
O operador LIKE compara uma expressão de string, tal como um nome de coluna, a um padrão que usa os caracteres curinga % (por cento) e _ (sublinhado). A correspondência de padrão LIKE sempre abrange toda a string. Para corresponder uma sequência em qualquer lugar de uma string, o padrão deve começar e terminar com um sinal de por cento.
LIKE diferencia entre maiúsculas e minúsculas; ILIKE não diferencia entre maiúsculas e minúsculas.
Sintaxe
expression [ NOT ] LIKE | ILIKE pattern [ ESCAPE 'escape_char' ]
Argumentos
- expressão
-
Uma expressão de caractere UTF-8 válida, tal como um nome de coluna.
- LIKE | ILIKE
-
LIKE executa uma correspondência de padrão com diferenciação entre maiúsculas e minúsculas. ILIKE realiza uma correspondência de padrão sem diferenciação entre maiúsculas e minúsculas para caracteres de byte único UTF-8 (ASCII). Para realizar uma correspondência de padrões sem distinção entre maiúsculas e minúsculas para caracteres de vários bytes, use a função LOWER em expressão e padrão com uma condição LIKE.
Em contraste com predicados de comparação, como = e <>, predicados LIKE e ILIKE não ignoram implicitamente os espaços à direita. Para ignorar espaços à direita, use RTRIM ou converta explicitamente uma coluna CHAR em VARCHAR.
O operador
~~
é equivalente a LIKE, e~~*
é equivalente a ILIKE. Além disso, os operadores!~~
e!~~*
são equivalentes a NOT LIKE e NOT ILIKE. - pattern
-
Uma expressão de caractere UTF-8 válida com o padrão a ser correspondido.
- escape_char
-
Uma expressão de caractere que irá escapar caracteres de metacaracteres no padrão. O padrão é duas barras invertidas ('\\').
Se o padrão não contém metacaracteres, o padrão representa somente a própria string; nesse caso, LIKE age da mesma forma que o operador de igualdade.
Qualquer uma das expressões de caracteres pode ser de tipos de dados CHAR ou VARCHAR. Se eles forem diferentes, o Amazon Redshift converterá o padrão no tipo de dados da expressão.
LIKE é compatível com os seguintes metacaracteres de correspondência de padrão:
Operador | Descrição |
---|---|
%
|
Corresponde a qualquer sequência de zero ou mais caracteres. |
_ |
Corresponde a qualquer caractere único. |
Exemplos
A seguinte tabela mostra exemplos de correspondência de padrão usando LIKE:
Expressão | Retornos |
---|---|
'abc' LIKE 'abc' |
Verdadeiro |
'abc' LIKE 'a%' |
Verdadeiro |
'abc' LIKE '_B_' |
Falso |
'abc' ILIKE '_B_' |
Verdadeiro |
'abc' LIKE 'c%' |
Falso |
O seguinte exemplo localiza todas as cidades cujos nomes começam com “E”:
select distinct city from users where city like 'E%' order by city; city --------------- East Hartford East Lansing East Rutherford East St. Louis Easthampton Easton Eatontown Eau Claire ...
O seguinte exemplo localiza usuários cujos sobrenomes contêm “ten”:
select distinct lastname from users where lastname like '%ten%' order by lastname; lastname ------------- Christensen Wooten ...
O exemplo a seguir demonstra como combinar vários padrões.
select distinct lastname from tickit.users where lastname like 'Chris%' or lastname like '%Wooten' order by lastname; lastname ------------- Christensen Christian Wooten ...
O seguinte exemplo localiza as cidades cujos terceiros e quartos caracteres são “ea”. O comando usa ILIKE para demonstrar a não diferenciação entre maiúsculas e minúsculas:
select distinct city from users where city ilike '__EA%' order by city; city ------------- Brea Clearwater Great Falls Ocean City Olean Wheaton (6 rows)
O seguinte exemplo usa a string de escape padrão (\\) para pesquisar strings que incluem “start_” (o texto start
seguido por um sublinhado _
):
select tablename, "column" from pg_table_def where "column" like '%start\\_%' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)
O seguinte exemplo especifica “^” como caractere de escape e o utiliza para pesquisar strings que incluem “start_” (o texto start
seguido por um sublinhado _
):
select tablename, "column" from pg_table_def where "column" like '%start^_%' escape '^' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)
O exemplo a seguir usa o operador ~~*
para fazer uma pesquisa sem distinção entre maiúsculas e minúsculas (ILIKE) de cidades que começam com “Ag”.
select distinct city from users where city ~~* 'Ag%' order by city;
city ------------ Agat Agawam Agoura Hills Aguadilla