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:

[ NOT ] LIKE

Sintaxe

<subject> LIKE ALL (<pattern1> [, <pattern2> ... ] ) [ ESCAPE <escape_char> ]
Copy

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 valor BOOLEAN ou NULL:

  • Retorna TRUE se há uma correspondência.

  • Retorna FALSE se não há uma correspondência.

  • Retorna NULL se algum argumento for NULL.

Notas de uso

  • Para incluir aspas simples ou outros caracteres especiais na correspondência de padrões, você pode usar uma sequência de escape de barra invertida.

  • 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 nenhum dos padrões especificados.

  • 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) em subject 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%).

  • 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 ...)
    
    Copy
  • Se você precisar de uma correspondência de padrões mais complexa do que esta função aceita, use uma função de expressão regular em vez disso.

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).

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);
Copy

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;
Copy
+-------------+                                                                 
| 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;
Copy
+------+                                                                        
| 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;
Copy
+------------+                                                                  
| NAME       |
|------------|
| John_do%wn |
+------------+