АВТОМАТИЧЕСКОЕ усечение переменной до определенной длины в Derby
Вопрос
Как я могу автоматически обрезать VARCHAR до длины поля таблицы в Derby с использованием SQL?
Чтобы быть конкретным:
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 перед тем, как вставить его. используйте функцию обрезки в вашем скрипте / процедуре вставки.
Я не знаком с 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));