列が空の場合は、データ型を変更できます。
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 コースよりも安いのはなぜですか ;-) ?