Condiciones de coincidencia de patrones - Amazon Redshift

Condiciones de coincidencia de patrones

Un operador de coincidencia de patrones busca una cadena para un patrón especificado en la expresión condicional y devuelve true o false según si encuentra una coincidencia o no. Amazon Redshift utiliza tres métodos de coincidencia de patrones:

  • Expresiones LIKE

    El operador LIKE compara una expresión de cadena, como el nombre de una columna, con un patrón que usa caracteres comodines % (porcentaje) y _ (guion bajo). La coincidencia de patrones LIKE siempre cubre la cadena completa. LIKE realiza una coincidencia que distingue entre mayúsculas y minúsculas, mientras que ILIKE realiza una coincidencia que no distingue entre mayúsculas y minúsculas.

  • Expresiones regulares SIMILAR TO

    El operador SIMILAR TO relaciona una expresión de cadena con un patrón de expresión regular de SQL estándar, que puede incluir un conjunto de metacaracteres de coincidencia de patrón que incluyen los dos admitidos por el operador LIKE. SIMILAR TO relaciona la cadena completa y realiza una coincidencia que distingue entre mayúsculas y minúsculas.

  • Expresiones regulares de estilo POSIX

    Las expresiones regulares POSIX proporcionan un medio más potente para la coincidencia de patrones que los operadores LIKE y SIMILAR TO. Los patrones de la expresión regular POSIX pueden relacionar cualquier parte de la cadena y realizan una coincidencia que distingue entre mayúsculas y minúsculas.

La coincidencia de expresiones regulares, a través de los operadores SIMILAR TO o POSIX, es costosa informáticamente. Recomendamos utilizar LIKE cuando sea posible, especialmente cuando procesa una gran cantidad de filas. Por ejemplo, las siguientes consultas son idénticas desde el punto de vista funcional, pero la consulta que utiliza LIKE se ejecuta varias veces más rápido que la consulta que utiliza una expresión regular:

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