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"