Re: Ayuda con Check

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Marco Aurelio Sotelo Figueroa <masotelof(at)yahoo(dot)com(dot)mx>
Cc: Ayuda Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con Check
Date: 2005-04-28 04:08:24
Message-ID: 20050428040824.GC26819@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, Apr 27, 2005 at 10:41:01PM +0200, Marco Aurelio Sotelo Figueroa wrote:

> >>&nbsp;&nbsp;&nbsp; constraint chk_cliente_rfc check (rfc like
> >>'[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9][A-Z][A-Z][0-9]' or
> >>rfc like
> >>'[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9][A-Z][A-Z][0-9]'),<br>
> >>&nbsp;&nbsp;&nbsp; constraint chk_cliente_curp check (curp like
> >>'[A-Z][A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9][H,M][A-Z][A-Z][A-Z][A-Z][A-Z][0-9][0-9]'),<br>
> >>&nbsp;&nbsp;&nbsp; constraint fk_cliente_ciudad foreign key (ciudad)
> >>references ciudad
> >>(id_ciudad));</font><br>
>
> Cuales son los cuantificadores {M,N}, lo que pasa es que esas funciones
> es de una base de datos que se me proporciono en SQL server y estoy
> transformando a Postgres, el problema es que alla si funciona, por otra
> parte [H,M] es solo por la eleccion de H o M (esto es para el CURP).

Creo que la expresion para rfc deberia ser

(rfc like [A-Z]{3,4}[0-9]{6}[A-Z]{2}[0-9])

y lo de curp

(curp like [A-Z]{4}[0-9]{6}[HM][A-Z]{4}[0-9]{2})

Supongo que con eso se aclara la pregunta de los cuantificadores.

Con respecto a [H,M], debes saber que las clases de caracteres no se
separan por comas; todos los caracteres entre los [] son considerados
como coincidencias del patron. Por lo tanto, no debes poner , entre los
[] si no quieres que haya , en el campo.

Una cosa que me acabo de dar cuenta es que estas comparando estas
expresiones con LIKE ... _obviamente_ esto no va a funcionar!! Tienes
que usar el operador de expresiones regulares, que seria ~ (o si quieres
que las expresiones no sean sensibles a minusculas, ~*)

No se por que no me sorprende que viniendo de SQL Server aparezcan unas
expresiones que violan completamente el estandar SQL (las clases de
caracteres no estan soportadas en LIKE, solo en SIMILAR TO).

Lo otro que no me sorprende es que no me haya dado cuenta antes de que
no eran expresiones regulares POSIX: dado que tu mensaje viene en HTML
se hace algo dificil de leer ...

Suerte,

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"The ability to monopolize a planet is insignificant
next to the power of the source"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-04-28 04:55:37 Re: sobre SPI_exec
Previous Message Juan Pablo Espino 2005-04-28 04:00:22 Re: sobre SPI_exec