Condições de correspondência de padrões - Amazon Redshift

Condições de correspondência de padrões

Um operador de correspondência de padrões busca uma string para um padrão especificado na expressão condicional e retorna verdadeiro ou falso, dependendo da localização ou não de uma correspondência. O Amazon Redshift usa três métodos para correspondência de padrão:

  • Expressões 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. LIKE executa uma correspondência com diferenciação entre letras maiúsculas e minúsculas e ILIKE executa uma correspondência sem diferenciação entre maiúsculas e minúsculas.

  • Expressões regulares SIMILAR TO

    O operador SIMILAR TO faz a correspondência de uma string com um padrão de expressão regular SQL, o que pode incluir um conjunto de metacaracteres de correspondência de padrão que inclui os dois compatíveis com o operador LIKE. SIMILAR TO corresponde toda a string e executa uma correspondência com diferenciação entre letras maiúsculas e minúsculas.

  • Expressões regulares estilo POSIX

    As expressões regulares POSIX fornecem uma forma mais poderosa para a correspondência de padrão do que os operadores LIKE e SIMILAR TO. Os padrões de expressão regular POSIX podem fazer a correspondência de qualquer parte da string e executam uma correspondência com diferenciação entre maiúsculas e minúsculas.

A correspondência de expressões regular usando operadores SIMILAR TO e POSIX é computacionalmente cara. Recomendamos usar LIKE sempre que possível, especialmente ao processar um número muito grande de linhas. Por exemplo, as seguintes consultas são funcionalmente idênticas, mas a consulta que usa LIKE é executada várias vezes mais rápido do que a consulta que usa uma expressão regular:

select count(*) from event where eventname SIMILAR TO '%(Ring|Die)%'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';