none
Filtrar inicio consonante (Expresión Regular) RRS feed

  • Pregunta

  • Hola,

    Deseo filtrar una tabla que tiene un campo varchar, de tal forma, que se obtenga sólo aquellos registros cuyo valor para dicha columna empiecen con una consonante.

    Mi intento ha sido el siguiente:

    WHERE COLUMNA_TEXTO LIKE '[a-z&&[^aeiou]]%'

    Pero no está funcionando, además quisiera poder hacer que ignore la sensibilidad entre mayúsculas y minúsculas para no tener que hacer algo como:

    WHERE COLUMNA_TEXTO LIKE '[a-zA-Z&&[^aeiouAEIOU]]%'
    Favor su apoyo, saludos.

    sábado, 28 de octubre de 2017 20:22

Respuestas

  • Quizá lo más sencillo sea esto:

    WHERE COLUMNA_TEXTO LIKE '[BCDFGHJKLMNÑPQRSTVWXYZ]%'

    Será insensible a mayúsculas y minúsculas si el SQL Server lo tienes configurado con uno de los Collation que tienen _CI_ en el nombre (Case Insensitive). Esta es la configuración predeterminada, si no la has cambiado aposta por una de las _CS_. Si así fuera, siempre puedes poner al final de la sentencia un COLLATE .... indicando una intercalación elegida entre las insensibles a mayúsculas.

    Nótese que las expresiones regulares no permiten anidar rangos de caracteres, por lo que no puedes poner a-z y luego añadir que no sea una vocal. Pero en cambio SQL sí que lo permite con un AND en el WHERE:

    WHERE COLUMNA_TEXTO LIKE '[a-z]%' AND NOT COLUMNA_TEXTO LIKE '[aeiou]%'


    sábado, 28 de octubre de 2017 20:38