Как я могу обрезать VARCHAR до длины поля таблицы АВТОМАТИЧЕСКИ в Дерби, используя SQL?
Чтобы быть конкретным:
CREATE TABLE A ( B VARCHAR(2) ); INSERT INTO A B VALUES ('1234');
выдаст исключение SQLE:
A truncation error was encountered trying to shrink VARCHAR '123' to length 2.
Есть ли простой способ подавить это исключение?
Нет. Вы должны отрубить его после проверки метаданных. Или, если вы не хотите проверять метаданные каждый раз, тогда вы должны синхронизировать и код, и базу данных. Но это не имеет большого значения, это обычная практика в валидаторах.
Вы можете использовать SUBSTR:
SUBSTR
CREATE TABLE A ( B VARCHAR(2) ); INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));
В случае использования подготовленных выписок:
INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
Вы можете обрезать varchar перед вставкой.используйте функцию обрезки в вашем скрипте / процедуре вставки.
Я не знаком с Derby, но в MSSQL я делаю то же самое, используя обрезку, чтобы избежать ошибки усечения (только там, где мне не нужнополные данные), гораздо предпочтительнее увеличить длину varchar