Я пытаюсь перенести БД из Informix в Oracle. У Informix была опция, например, при вставке в таблицу, если размер значения превышает длину столбца, тогда Informix автоматически обрезает данные. Но Oracle не поддерживает это и всегда выдает исключение .Есть ли способ предотвратить и разрешить обрезку или мы должны уважать религиозно?
Вставка данных в Oracle
Ответы (3)
В Oracle нет автоматической обрезки данных, вы должны сами обрезать их, например.
insert into mytable (id, text) values (123, substr(var,1,4000));
person
Tony Andrews
schedule
02.03.2011
Oracle поддерживает различные функции SQL, которые обрезают переменные. Я подозреваю, что вам понадобится «SUBSTR()». Проблема в том, что вам нужно будет явно указать желаемую длину. В этом примере T23.WHATEVER предполагается равным VARCHAR2(30), а T24.TOO_LONG_COLUMN, э-э, длиннее:
insert into t23
(id
, whatever)
select pk_col
, substr(too_long_col, 1, 30)
from t42
/
person
APC
schedule
02.03.2011
Как и предложение Тони, вы можете использовать CAST
select cast ('1234' as varchar2(3)) a
from dual
Если вы выполняете миграцию данных, загляните в Журнал ошибок DML.
Помещение всех ваших несоответствующих данных в соответствующую таблицу с указанием причины сбоя — это просто мечта.
person
Gary Myers
schedule
02.03.2011