截断在德比一个VARCHAR到特定长度AUTOMATICALLY(Truncate a VARCHA

2019-09-16 13:40发布

我怎样才能自动德比使用SQL截断VARCHAR表中字段的长度?

再具体一点:

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.

有没有一种简单的方法来抑制这种异常?

Answer 1:

不,你应该检查元数据后砍了下来。 或者,如果你不想检查元数据每次,则必须在同步保持双方你的代码和数据库。 但那不是什么大不了的事,它在验证一个惯例。



Answer 2:

您可以在插入之前裁剪的VARCHAR。 使用裁剪功能在你的插入脚本/程序。

我不熟悉的德比,但在MSSQL我做同样的事情,用修剪,以避免截断误差(仅在我不需要完整的数据),它更优选增加VARCHAR的长度



Answer 3:

您可以使用SUBSTR

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

如果你使用准备好的语句:

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


文章来源: Truncate a VARCHAR to specific length in Derby AUTOMATICALLY