How can I truncate a VARCHAR to the table field length AUTOMATICALLY in Derby using SQL?
To be specific:
CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES ('1234');
would throw a SQLException:
A truncation error was encountered trying to shrink VARCHAR '123' to length 2.
Is there a easy way to suppress this exception?
No. You should chop it off after checking the meta-data. Or if you don't wanna check the meta-data everytime, then you must keep both your code and database in sync. But thats not a big deal, its a usual practice in validators.
You can trim the varchar before inserting it.
use the trim function in your insert script/procedure.
I'm not familiar with Derby, but in MSSQL I do exactly the same thing, using trim to avoid truncation error (only where I don't need the full data), it's much more preferable to increase the length of the varchar
You can use SUBSTR
:
CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));
In case you use prepared statements:
INSERT INTO A B VALUES (SUBSTR(?, 1, 2));