Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用表中的现有行修改Oracle中的数据类型_Oracle_Oracle11g_Type Conversion - Fatal编程技术网

如何使用表中的现有行修改Oracle中的数据类型

如何使用表中的现有行修改Oracle中的数据类型,oracle,oracle11g,type-conversion,Oracle,Oracle11g,Type Conversion,如何在不删除表数据的情况下将列的数据类型从number更改为varchar2 但是,您可以使用新数据类型创建新列、迁移数据、删除旧列以及重命名新列。差不多 ALTER TABLE table_name ADD( new_column_name varchar2(10) ); UPDATE table_name SET new_column_name = to_char(old_column_name, <<some format>>); ALTER TABL

如何在不删除表数据的情况下将列的数据类型从
number
更改为
varchar2

但是,您可以使用新数据类型创建新列、迁移数据、删除旧列以及重命名新列。差不多

ALTER TABLE table_name
  ADD( new_column_name varchar2(10) );

UPDATE table_name
   SET new_column_name = to_char(old_column_name, <<some format>>);

ALTER TABLE table_name
 DROP COLUMN old_column_name;

ALTER TABLE table_name
 RENAME COLUMN new_column_name TO old_coulumn_name;
ALTER TABLE\u name
添加(新列名称varchar2(10));
更新表名称
将new_column_name=设置为_char(old_column_name,);
更改表格名称
删除列旧的列名称;
更改表格名称
将列new_COLUMN_name重命名为old_COLUMN_name;

如果您有依赖于列在表中的位置的代码(实际上不应该有),您可以重命名该表,并使用表的原始名称在该表上创建一个视图,该视图按照代码所期望的顺序公开列,直到您可以修复该错误代码。

在修改列数据类型之前,您必须先处理现有行

您可以执行以下步骤:

  • 使用新名称添加新列
  • 从旧列更新新列
  • 删除旧列
  • 使用旧列名重命名新列
  • 比如说,

    alter table t add (col_new varchar2(50)); update t set col_new = to_char(col_old); alter table t drop column col_old cascade constraints; alter table t rename column col_new to col_old; 更改表t添加(col_new varchar2(50)); 将t set col_new=更新为col_char(col_old); 改变表t下拉列列COLU旧的级联约束; 改变表t,将列col_new重命名为col_old; 确保重新创建所有所需的索引


    您还可以尝试CTAS方法,即创建表作为选择。但是,以上方法是安全且可取的。

    最有效的方法可能是创建表。。。作为选择
    (CTAS)

    更改表格名称修改(列名称VARCHAR2(255));
    
    因为我们不能用值更改列的数据类型,所以我采用的方法如下:

    假设要更改类型的列名为“A”,这可以通过SQL developer实现

    第一个按其他列对表数据进行排序(例如:datetime)。 接下来复制列“A”的值并粘贴到excel文件。 在提交时删除列“A”的值。 更改数据类型并提交。 再次按以前使用的列(例如:datetime)对表数据进行排序。
    然后粘贴从excel复制的数据并提交。

    不客气。如果它对您有帮助,请将其标记为已回答。