PDA

Ver la Versión Completa : Usando la cláusula LIKE


mlara
09-06-2003, 07:14:35
Hola.

Estoy migrando una base de datos construirda en MS-SQLServer 7 a InterBase (7).

Tengo el siguiente DDL:

CREATE TABLE demo(
idcad CHAR(2) CONTRAINT nombrerestriccion CHECK (idcad LIKE '[0-1][1-5]')
);

lo cual significa que el campo idcad sólo puede tener los caracteres 0 y 1 en la primera posición, y del 1 al 5 en la segunda.

Ahora, cuando creo esta tabla en InterBase, la creación se produce sin problemas, sin embargo la restricción CHECK no funciona. He tratado de interpretar la sintaxis tal como se encuentra en la referencia el lenguaje, y también he buscado ejemplos, pero todavía no doy con la solución.

Cómo puedo hacer que funcione?

Gracias.

mlara
10-06-2003, 06:12:01
Ya tengo una respuesta:

Si escribo el script DDL como el siguiente sí funciona:

CREATE TABLE demo(
idcad CHAR(2) CHECK (SUBSTR(idcad, 1, 1) IN ('0', '1') AND SUBSTR(idcad, 2, 2) IN ('1', '2', '3', '4', '5'))
);

Ahora tengo otra duda. Puedo definir en InterBase conjuntos de caracteres como en Delphi, tal que en vez de poner una larga lista como ('1', '2', '3', '4', '5'), pudiera yo escribir algo como:

CREATE TABLE demo(
idcad CHAR(2) CHECK (SUBSTR(idcad, 1, 1) IN set_1 AND SUBSTR(idcad, 2, 2) IN set_2)
);

?

Gracias por su atención.