Усечь VARCHAR до определенной длины в Derby - PullRequest
2 голосов
/ 19 июня 2009

Как я могу обрезать 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.

Есть ли простой способ подавить это исключение?

Ответы [ 3 ]

3 голосов
/ 19 июня 2009

Нет. Вы должны отрубить его после проверки метаданных. Или, если вы не хотите проверять метаданные каждый раз, тогда вы должны синхронизировать и код, и базу данных. Но это не имеет большого значения, это обычная практика в валидаторах.

0 голосов
/ 15 сентября 2015

Вы можете использовать SUBSTR:

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

В случае использования подготовленных выписок:

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
0 голосов
/ 19 июня 2009

Вы можете обрезать varchar перед вставкой.используйте функцию обрезки в вашем скрипте / процедуре вставки.

Я не знаком с Derby, но в MSSQL я делаю то же самое, используя обрезку, чтобы избежать ошибки усечения (только там, где мне не нужнополные данные), гораздо предпочтительнее увеличить длину varchar

...