none
consulta para identificar registros que contienen caracteres que no deben tener (expresiones regulares en sql server) RRS feed

  • Pregunta

  • Hola a todos, favor su colaboración con lo siguiente:

    Tengo un campo de una tabla llamado xxx, este campo solamente debe aceptar letras y caracteres ([0-9a-zñÑA-Z]), como puede hacer para identificar los registros que tengan otros caracteres (ejemplo E/T, si bien E y T estan bien, la / no cumple), como por ejemplo !"·$%&/()=, etc.

    Y también tengo un campo yyy que solo debería aceptar registros que cumplan [a-zA-ZÑñ0-9 &/'\\+\".\\-], como identifico los que ya entraron pero no cumplen la expresión.

    Agradezco de antemao

    jueves, 12 de octubre de 2017 22:32

Respuestas

  • Puedes probar con los mismos caráctrers que tienes como patron pero agregarles el negativo dentro de él ej

    ([^0-9a-zñÑA-Z]) el carácter ^ dentro de la instruccíon se toma como negativo por tanto buscara todo lo que no esté en patrón

    Saludos

    viernes, 13 de octubre de 2017 2:21
  • la clausula like, si no me equivoco, es capaz de lidiar con expresiones regulares, puedes poner una restricción check que haga lo que tu pretendes.

    para ver los que cumplen select * from tabla where columna like '%[a-zA-ZÑñ0-9 &/'\\+\".\\-]%'  y para los que no, usa not like


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    viernes, 13 de octubre de 2017 6:02
    Moderador

Todas las respuestas

  • Puedes probar con los mismos caráctrers que tienes como patron pero agregarles el negativo dentro de él ej

    ([^0-9a-zñÑA-Z]) el carácter ^ dentro de la instruccíon se toma como negativo por tanto buscara todo lo que no esté en patrón

    Saludos

    viernes, 13 de octubre de 2017 2:21
  • la clausula like, si no me equivoco, es capaz de lidiar con expresiones regulares, puedes poner una restricción check que haga lo que tu pretendes.

    para ver los que cumplen select * from tabla where columna like '%[a-zA-ZÑñ0-9 &/'\\+\".\\-]%'  y para los que no, usa not like


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    viernes, 13 de octubre de 2017 6:02
    Moderador
  • Muchas gracias a todos por su apoyo, al final despues de tanta vuelta logre con algo como esto:

    where PATINDEX('%[^a-zA-Z0-9ñÑ]%', placa) <> 0

    Saludos cordiales


    Roy Sillerico

    viernes, 13 de octubre de 2017 13:17