如何使用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.

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

有帮助吗?

解决方案

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

其他提示

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

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

您可以使用 SUBSTR

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

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

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top