Pregunta

¿Cómo puedo truncar un VARCHAR a la longitud del campo de la tabla AUTOMÁTICAMENTE en Derby usando SQL?

Para ser específico:

CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES ('1234');

arrojaría una SQLException:

A truncation error was encountered trying to shrink VARCHAR '123' to length 2.

¿Hay alguna manera fácil de suprimir esta excepción?

¿Fue útil?

Solución

No. Debe cortarlo después de verificar los metadatos. O si no desea verificar los metadatos cada vez, debe mantener sincronizados tanto su código como su base de datos. Pero eso no es gran cosa, es una práctica habitual en validadores.

Otros consejos

Puede recortar el varchar antes de insertarlo. use la función de recorte en su script / procedimiento de inserción.

No estoy familiarizado con Derby, pero en MSSQL hago exactamente lo mismo, usando trim para evitar el error de truncamiento (solo cuando no necesito los datos completos), es mucho más preferible aumentar la longitud del varchar

Puede usar SUBSTR :

CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));

En caso de que use declaraciones preparadas:

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top