Как вставить данные в другую таблицу с преобразованием типа данных одного из столбцов?
Есть таблица, нужно сделать её копию, но изменить тип данных одного столбца:
- id(id) - name(varchar2) - phone(varchar2)
Нужно:
- id(id) - name(varchar2) - phone(number)
Нужно сохранить данные при копировании. В колонке phone данные записаны в таком формате - 34252345.
Знаю о такой возможности внесения данных:
insert into new_table
select * from old_table
Но как при этом преобразовать тип данных?
В таблице более 3 миллионов записей, так что выгрузить её и залить в новую будет проблематично.
Ответы (1 шт):
Символьные данные будут неявно преобразованы в числовые. Так как колонка phone содержит только целочисленные значения, то каких либо проблем неявное преобразование не вызовет.
create table t1 (id, name, phone) as
select 1, 'name', '34252345' from dual;
create table t2 (id int, name varchar2(8), phone number);
insert into t2
select * from t1;
1 row inserted.
select * from t2;
ID NAME PHONE
---------- -------- ----------
1 name 34252345
Заметка об ограничении ответственности:
Телефонные номера правильно хранить в колонках с символьным типом данных. Попытка преобразовать их в числовой тип данных являетсся ошибкой дизайна БД, которая может привести к потере данных.