2011-12-06 40 views
8

我在varchar2,4000字節的表中有一個字段。有超過50000行。並非所有行都在此字段中包含數據。很少數據字段超過255個字節,但有些是4000.要將表放置在新的應用程序中,我需要將字段縮短爲255個字節。如何在Oracle中縮短varchar2字段?

是否有一條SQL語句將長度減少到255?我意識到數據將會丟失,這是新應用程序成本的一部分。剪切應該是任意的,不管情況如何,只要停止255的數據。

+0

更新和子 – xQbert

回答

28
update b set text2 = substr(text2,1,255); 

然後alter table設置列的長度255

alter table b MODIFY "TEXT2" varchar2(255 byte); 
+0

非常感謝您! – user761758

+8

因爲只有幾行,我只會更新太大的記錄...添加'WHERE LENGTH(text2)> 255' –

+1

理論問題:我很好奇這將如何幫助。乍一看,我同意它應該。但是當我開始思考它時,我開始懷疑。與哪裏,它必須先做一個長度(性能命中)在每一個記錄,因爲我懷疑有一個長度的指數。那麼它必須是子字符串。所以在我看來,它實際上可能會變慢。只是使用str,它會爲每個記錄執行一次計數,並且每次都停止在255或結束字符串處。而長度則必須計算一切。然後做子字符串。只是思考的食物。 – xQbert

相關問題