如何使用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.
是否有一种简单的方法来抑制此异常?
答案 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));