regexp_replace regexp_like regexp_instr regexp only examples ejemplos sql regex oracle oracle11g check-constraints

sql - regexp_like - regexp_instr



Oracle 11g: comprueba la restricción con RegEx (1)

Estoy usando Oracle 11g, y tratar de crear una tabla define las limitaciones en la creación.

Estaba intentando agregar una restricción de verificación para validar cierta información (como la dirección de correo electrónico, el número de teléfono, etc.)

¿Hay algo en Oracle 11g que me permita hacer algo como esto?

constraint CK_CONSTRAINT_NAME check (EMAIL like ''REGEX'')

El regEx que quería usar (tomado de regexLib) es:

^[a-zA-Z][a-zA-Z0-9_/./-]+@([a-zA-Z0-9-]{2,}/.)+([a-zA-Z]{2,4}|[a-zA-Z]{2}/.[a-zA-Z]{2})$

Creo que Oracle 11g (corrígeme si estoy equivocado) no admite este formato para RegEx ...

He visto métodos que usan REGEX_LIKE, pero parece funcionar solo en cláusulas WHERE .

Me gustaría mantenerlo como una restricción de verificación y no como un disparador o una función / script externo.

Además, he leído en otros hilos aquí, alguien que dice RegEx ''no es una buena forma de verificar el formato de la dirección de correo electrónico y tal información. No se dio ninguna razón en el comentario, y me gustaría saber por qué, si hay alguna razón.

Gracias por tus aportes y tu ayuda.

muy apreciado.


Una restricción de verificación sigue las mismas reglas de sintaxis que las condiciones para una cláusula WHERE:

alter table foo add constraint check_email check (REGEXP_LIKE(email,''your_regex_goes_here'',''I''));

Más detalles en el manual:

Editar:

Sin embargo, existen algunas restricciones sobre lo que realmente puede usar en una restricción de verificación: