在Derby AUTOMATICALLY中将VARCHAR截断为特定长度

时间:2009-06-19 08:27:32

标签: java string varchar derby javadb

如何使用SQL在Derby中将VARCHAR截断为表字段长度AUTOMATICALLY?

具体来说:

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

会抛出一个SQLException:

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

是否有一种简单的方法来抑制此异常?

3 个答案:

答案 0 :(得分:3)

没有。您应该在检查元数据后将其删除。或者,如果您不想每次都检查元数据,那么您必须保持代码和数据库同步。但这不是什么大问题,它是验证人员的惯常做法。

答案 1 :(得分:0)

您可以在插入varchar之前修剪它。 在插入脚本/过程中使用trim函数。

我不熟悉Derby,但是在MSSQL中我做了完全相同的事情,使用trim来避免截断错误(仅在我不需要完整数据的地方),更可取的是增加长度VARCHAR

答案 2 :(得分:0)

您可以使用SUBSTR

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

如果你使用准备好的陈述:

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));