Oracle在表中有數(shù)據(jù)的情況下修改字段類(lèi)型或長(zhǎng)度的解決方法
Oracle 數(shù)據(jù)庫(kù)如何在表中有數(shù)據(jù)的情況下,修改表字段的類(lèi)型或者增加表字段的長(zhǎng)度解決方法
我們偶爾需要在已有表,并且有數(shù)據(jù)的情況下,修改其某個(gè)字段的類(lèi)型或改變他的長(zhǎng)度,但是因?yàn)楸碇杏袛?shù)據(jù),所以不可以直接修改,需要換個(gè)思路。
-- Create table create table TABLE1 ( col1 number(9), col2 char(20) );
-- 嘗試修改 -- 修改成功,因?yàn)楸碇袩o(wú)數(shù)據(jù) ALTER TABLE TABLE1 MODIFY COL1 NUMBER(10); -- 插入數(shù)據(jù) INSERT INTO TABLE1 (COL1, COL2) VALUES (1, 'test'); -- 再次嘗試修改 -- 修改失敗,因?yàn)楸碇幸延袛?shù)據(jù),不允許直接操作 ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20); -- 先緩存表 CREATE TABLE T_TABLE1 AS SELECT * FROM TABLE1; -- 刪除原表所有數(shù)據(jù) DELETE FROM TABLE1; -- 修改字段 -- 修改成功 ALTER TABLE TABLE1 MODIFY COL1 NUMBER(9); -- 修改成功 ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20); -- 插入原數(shù)據(jù) INSERT INTO TABLE1 SELECT * FROM T_TABLE1; -- 刪除緩存表 DROP TABLE T_TABLE1;
注意,如果是CHAR類(lèi)型,不足位數(shù)會(huì)自動(dòng)用空格補(bǔ)齊,所以謹(jǐn)慎使用CHAR類(lèi)型,并可用TRIM()驗(yàn)證是否有符合條件的記錄。
初始表結(jié)構(gòu)時(shí),SELECT * FROM TABLE1 WHERE COL2 = 'test'; 是沒(méi)有數(shù)據(jù)的,需要SELECT * FROM TABLE1 WHERE TRIM(COL2) = 'test';
-- 增加一個(gè)新字段,用于緩存原字段信息 ALTER TABLE 表名 ADD 新字段 VARCHAR(2000); -- 將原字段值復(fù)制到新字段上緩存 UPDATE 表名 SET 新字段 = 原字段; -- 現(xiàn)將原字段值清空,以便于修改字段大小 UPDATE 表名 SET 原字段 = null; -- 修改原字段 ALTER TABLE 表名 MODIFY 原字段 VARCHAR(2000); -- 將新字段值復(fù)制到原字段 UPDATE 表名 SET 原字段 = 新字段; -- 刪除字段 ALTER TABLE 表名 DROP COLUMN 新字段;
到此這篇關(guān)于Oracle在表中有數(shù)據(jù)的情況下修改字段類(lèi)型或長(zhǎng)度的文章就介紹到這了,更多相關(guān)Oracle修改字段類(lèi)型或長(zhǎng)度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
LINUX下Oracle數(shù)據(jù)導(dǎo)入導(dǎo)出的方法詳解
這篇文章主要介紹了LINUX下Oracle數(shù)據(jù)導(dǎo)入導(dǎo)出的方法,較為詳細(xì)的分析導(dǎo)出工具exp及導(dǎo)入工具imp的具體使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
Oracle數(shù)據(jù)庫(kù)中的循環(huán)語(yǔ)法及舉例
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)中的循環(huán)語(yǔ)法及舉例的相關(guān)資料,Oracle循環(huán)操作是指在Oracle數(shù)據(jù)庫(kù)中使用循環(huán)結(jié)構(gòu)來(lái)重復(fù)執(zhí)行一段代碼或一組語(yǔ)句,Oracle提供了多種循環(huán)結(jié)構(gòu),包括FOR循環(huán)、WHILE循環(huán)和LOOP循環(huán),需要的朋友可以參考下2023-09-09
oracle 10g OEM常規(guī)錯(cuò)誤(Unknown host specified)解決
本文將詳細(xì)介紹oracle 10g OEM常規(guī)錯(cuò)誤-------Unknown host specified解決方法,需要了解的朋友可以參考下2012-11-11
Oracle中的translate函數(shù)用法小結(jié)
translate提供了與replate函數(shù)相關(guān)的功能, replace讓你用一個(gè)字符串替換另一個(gè)字符串,以及刪除字符串,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
解決Oracle圖形化安裝過(guò)程中出現(xiàn)的豎線(xiàn)問(wèn)題
這篇文章主要介紹了解決ORACLE圖形化安裝過(guò)程中出現(xiàn)的豎線(xiàn)問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
DBA_Oracle Startup / Shutdown啟動(dòng)和關(guān)閉過(guò)程詳解(概念)(對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種維護(hù)操作)
對(duì)于大多數(shù)Oracle DBA來(lái)說(shuō),啟動(dòng)和關(guān)閉Oracle數(shù)據(jù)庫(kù)最常用的方式就是在命令行方式下的Server Manager。從Oracle 8i以后,系統(tǒng)將Server Manager的所有功能都集中到了SQL*Plus中,也就是說(shuō)從8i以后對(duì)于數(shù)據(jù)庫(kù)的啟動(dòng)和關(guān)閉可以直接通過(guò)SQL*Plus來(lái)完成2014-08-08
And,Where使用提示以及用+進(jìn)行左關(guān)聯(lián)的提示及注意事項(xiàng)
先左關(guān)聯(lián)后在過(guò)濾假如關(guān)聯(lián)的結(jié)果里面B.b3=null那么你在where后面在加B.b3=2那么結(jié)果中B.b3肯定是沒(méi)有null的情況的,也就是說(shuō)用+進(jìn)行左關(guān)聯(lián)沒(méi)有用leftjoin靈活待后續(xù)看是否有什么好的解決方案2013-02-02
Oracle數(shù)據(jù)庫(kù)常見(jiàn)字段類(lèi)型大全以及超詳細(xì)解析
在Oracle數(shù)據(jù)庫(kù)中查詢(xún)特定表的字段個(gè)數(shù)通常需要使用SQL語(yǔ)句來(lái)完成,這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)常見(jiàn)字段類(lèi)型大全以及超詳細(xì)解析,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
Oracle數(shù)據(jù)庫(kù)刪除表空間后磁盤(pán)空間不釋放的問(wèn)題及解決
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)刪除表空間后磁盤(pán)空間不釋放的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Oracle 兩個(gè)逗號(hào)分割的字符串,獲取交集、差集(sql實(shí)現(xiàn)過(guò)程解析)
這篇文章主要介紹了Oracle 兩個(gè)逗號(hào)分割的字符串,獲取交集、差集的sql實(shí)現(xiàn)過(guò)程解析,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10

