你可以改变数据类型如果列是空的:
ALTER TABLE student MODIFY (sfee VARCHAR2(10));
如果您需要保留数据,如你说,你可以重命名列,用新的数据类型添加新列,该数据在复制和删除改名为旧列:
CREATE TABLE student (sno NUMBER, sname VARCHAR2(10), scourse VARCHAR2(10), sfee NUMBER);
INSERT INTO student VALUES (1, 'RAM', 'SQL', 2100);
INSERT INTO student VALUES (2, 'JAM', 'JAVA', 3000);
ALTER TABLE student RENAME COLUMN sfee TO sfee_old;
ALTER TABLE student ADD (sfee VARCHAR2(10));
UPDATE student SET sfee = TO_CHAR(sfee_old,'fm9999');
ALTER TABLE student DROP COLUMN sfee_old;
如果它是一个大桌子,我建议你到物理重建它:
ALTER TABLE student MOVE;
现在SFEE
可以存储字符串值:
INSERT INTO student VALUES (3, 'TOM', 'LINUX', 'AJAY');
SELECT * FROM student;
如果它是一个庞大的生产表,我建议你简单地创建一个新表:
CREATE TABLE student_tmp AS
SELECT sno, sname, scourse, to_char(sfee,'fm9999') as sfee FROM student;
DROP TABLE student;
RENAME student_tmp TO student;
最后一个问题:为什么SQL课程比Java课程更便宜;-)?
你为什么在美国? –
这似乎是一个数据库问题:哪一个? – Richard
这可能有所帮助。 http://dba-oracle.com/t_alter_table_change_column_data_type.htm – FoolishSeth