更改Oracle中列的数据类型

use*_*622 18 oracle oracle10g oracle11g

我创建了下表

CREATE TABLE PLACE(
  POSTCODE VARCHAR(10) PRIMARY KEY,
  STREET_NAME VARCHAR(10),
  COUNTY VARCHAR(10),
  CITY VARCHAR(10));  
Run Code Online (Sandbox Code Playgroud)

我想改变name,countycityvarchar(10)varchar(20).我怎么做?

Jus*_*ave 35

ALTER TABLE place
  MODIFY( street_name VARCHAR2(20),
          county      VARCHAR2(20),
          city        VARCHAR2(20) )
Run Code Online (Sandbox Code Playgroud)

请注意,我也将数据类型从VARCHAR更改VARCHAR2为更常规.目前两者之间没有功能差异,但VARCHAR未来的行为可能会随着SQL标准的变化而变化.


Ali*_*igh 6

如果只想更改列类型,请在下面使用:

ALTER TABLE <table_name> MODIFY (<column_name> <new_Type>)
in your case:    
ALTER TABLE place MODIFY (street_name VARCHAR2(20),
                          county      VARCHAR2(20),
                          city        VARCHAR2(20))
Run Code Online (Sandbox Code Playgroud)

如果表中有数据,则可以执行以下操作:

  1. 向表添加具有新类型的列。
  2. 将数据从旧列复制到新列。
  3. 删除旧列。
  4. 将新列重命名为旧列。

要重命名列,请使用以下命令:

ALTER TABLE <table_name> rename column <column_name> to <new_column_name>
Run Code Online (Sandbox Code Playgroud)