АВТОМАТИЧЕСКОЕ усечение переменной до определенной длины в Derby

StackOverflow https://stackoverflow.com/questions/1016901

Вопрос

Как я могу автоматически обрезать 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));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top