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

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

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

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 |
+------------+