2008/11/11 Roberto A. <[EMAIL PROTECTED]>: > Roberto Almanza LL. > > Hola Lista . > Mi problema es el siguiente. > > > CREATE DOMAIN var_nomb as varchar(30) not null; > > CREATE TABLE DEPARTAMENTO( cod_dep varchar(15) primary key, > nombre varchar(100) not null > ); > > CREATE TABLE PROFESOR( dni varchar(15) primary key, > nombre var_nomb, > apellido var_nomb, > titulacion varchar not null, > cod_dep varchar(15), > foreign key(cod_dep) references departamento(cod_dep) > > > El problema es el siguiente > - Necesito validar el campo dni para que sea de este tipo "1.123.452-L" > > ej. > insert into alumno values('1.123.452-L','Jose > Antonio','Arenas','Bernabé','96-568-47-24','Pza. La paz, 3', > 'Altea','Alicante','25-05-1973','C'); > > Para esto intente usar la sintaxis de sql que es " dni like > '[0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]-[A-Z]' " > pero no funciona en postgres > > Pregunta > -¿Cual es la sintaxis que debo usar para validar esta condicion en > postgres?. o como se maneja el operador like en postgres > - Como inplemento el operador like en los triggers.
si usas "~" asi: select '1.234.456-l' ~ '[1-9].([0-9]{3}).([0-9]{3})-[a-zA-z]'; Creo que seria mejor que separes en dos campos uno para 1234456 bigint y un campo varchar(1) para la letra(l)... Para el RUN de Chile lo hago asi y creo un funcion que se le entrega el RUN y calcula el digito verificador. Saludos.- -- TIP 7: no olvides aumentar la configuración del "free space map"