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"

Responder a