2

如何使用 SQL 在 Derby 中将 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.

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

4

3 回答 3

3

不,你应该在检查元数据后把它砍掉。或者,如果您不想每次都检查元数据,那么您必须使代码和数据库保持同步。但这没什么大不了的,这是验证者的常见做法。

于 2009-06-19T08:52:48.697 回答
0

您可以在插入之前修剪 varchar。在插入脚本/过程中使用修剪功能。

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

于 2009-06-19T08:51:47.670 回答
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));
于 2015-09-15T12:59:55.313 回答