- Categorias:
Funções de cadeia de caracteres e binários (Correspondência/Comparação)
LIKE ALL¶
Executa uma comparação que diferencia maiúsculas de minúsculas para corresponder uma cadeia de caracteres a todos os um ou mais padrões especificados. Use esta função em uma cláusula WHERE para filtrar correspondências.
Dica
Você pode usar o serviço de otimização de pesquisa para melhorar o desempenho de consultas que chamam essa função. Para obter mais detalhes, consulte Serviço de otimização de pesquisa.
- Consulte também:
Sintaxe¶
<subject> LIKE ALL (<pattern1> [, <pattern2> ... ] ) [ ESCAPE <escape_char> ]
Argumentos¶
Obrigatório:
subject
A cadeia de caracteres a ser comparada com o(s) padrão(s).
pattern#
O(s) padrão(s) com o(s) qual(is) a cadeia de caracteres deve ser comparada. Você deve especificar pelo menos um padrão.
Opcional:
escape_char
Caractere(s) inserido(s) na frente de um curinga para indicar que o curinga deve ser interpretado como um caractere normal e não como um curinga.
Retornos¶
Retorna um BOOLEAN ou NULL. O valor será TRUE se houver uma correspondência. Caso contrário, retorna FALSE. Retorna NULL se algum argumento for NULL.
Notas de uso¶
Curingas SQL são suportados em
pattern
:Um sublinhado (
_
) corresponde a qualquer caractere individual.Um sinal de porcentagem (
%
) corresponde a qualquer sequência de zero ou mais caracteres.
Os caracteres curinga em
pattern
incluem caracteres de nova linha (n
) emsubject
como correspondências.O padrão é considerado compatível se corresponder a toda a cadeia de caracteres de entrada (assunto). Para combinar uma sequência em qualquer lugar dentro de uma cadeia de caracteres, comece e termine o padrão com
%
(por exemplo,%something%
).NULL não é compatível com NULL. Em outras palavras, se o assunto é NULL e um dos padrões é NULL, isso não é considerado uma correspondência.
Você pode usar o operador lógico NOT antes de
subject
para realizar uma comparação que diferencia maiúsculas de minúsculas que retorna TRUE se não corresponder a todos os padrões especificados.Se a função for usada com uma subconsulta, a subconsulta deve retornar uma única linha.
Por exemplo, o seguinte só deve ser usado se a subconsulta retornar uma única linha:
SELECT ... WHERE x LIKE ALL (SELECT ...)
Detalhes do agrupamento¶
Somente as especificações de agrupamento upper
, lower
e trim
são suportadas. Combinações com upper
, lower
e trim
também são suportadas (por exemplo, upper-trim
e lower-trim
), exceto para combinações de localidade (por exemplo, en-upper
).
Nota
Para usar esta função com uma coluna que tenha os especificadores de agrupamento upper
, lower
ou trim
, você deve ativar o pacote de mudança de comportamento 2024_02 em sua conta.
Para ativar este pacote em sua conta, execute a seguinte instrução:
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Exemplos¶
Criar uma tabela que contenha algumas cadeias de caracteres:
CREATE OR REPLACE TABLE like_all_example(name VARCHAR(20));
INSERT INTO like_all_example VALUES
('John Dddoe'),
('Joe Doe'),
('John_do%wn'),
('Joe down'),
('Tom Doe'),
('Tim down'),
(null);
Esta consulta mostra como usar padrões com curingas (%
) para encontrar correspondências:
SELECT *
FROM like_all_example
WHERE name LIKE ALL ('%Jo%oe%','J%e')
ORDER BY name;
+-------------+
| NAME |
|-------------|
| Joe Doe |
| John Dddoe |
+-------------+
Essa consulta mostra que todos os padrões precisam corresponder para que o resultado seja bem-sucedido:
SELECT *
FROM like_all_example
WHERE name LIKE ALL ('%Jo%oe%','J%n')
ORDER BY name;
+------+
| NAME |
|------|
+------+
Esta consulta mostra como usar um caractere de escape para indicar que caracteres que normalmente são curingas (_
e %
) devem ser tratados como literais.
SELECT *
FROM like_all_example
WHERE name LIKE ALL ('%J%h%^_do%', 'J%^%wn') ESCAPE '^'
ORDER BY name;
+------------+
| NAME |
|------------|
| John_do%wn |
+------------+