Oracle中char和varchar2的區別

2021-08-13 16:31:28 字數 804 閱讀 6723

1.char的長度是固定的,而varchar2的長度是可以變化的,比如,儲存字串「abc",對於char(20),表示你儲存的字元將佔20個位元組(包括17個空字元),在資料庫中它是以空格佔位的,而同樣的varchar2(20)則只占用3個位元組的長度,20只是最大值,當你儲存的字元小於20時,按實際長度儲存。

2.char的效率比varchar2的效率稍高。看來cscm_number應該設成 char(19)

3.目前varchar是varchar2的同義詞。工業標準的varchar型別可以儲存空字串,但是oracle不這樣做,儘管它保留以後這樣做的權利。oracle自己開發了乙個資料型別varchar2,這個型別不是乙個標準的varchar,它將在資料庫中varchar列可以儲存空字串的特性改為儲存null值。假如你想有向後相容的能力,oracle建議使用varchar2而不是varchar2。

何時該用char,何時該用varchar2?

char與varchar2是一對矛盾的統一體,

兩者是互補的關係.varchar2比

char

節省空間,在效率上比char會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在資料庫設計上常說的『以空間換效率』。

varchar2雖然比char節省空間,但是假如乙個varchar2列經常被修改,而且每次被修改的資料的長度不同,

這會引起『行遷移』(rowmigration)現象,而這造成多餘的i/o,是資料庫設計和調整中要盡力避免的,在這種情況下用char代替varchar2會更好一些。

c 中char 和 char 的區別

問題引入 在實習過程中發現了乙個以前一直預設的錯誤,同樣char c abc 和char c abc 前者改變其內 容程式是會崩潰的,而後者完全正確。程式演示 測試環境devc include using namespace std main 執行結果 2293628 4199056 abc 229...

c 中char 和 char 的區別

問題引入 在實習過程中發現了乙個以前一直預設的錯誤,同樣char c abc 和char c abc 前者改變其內 容程式是會崩潰的,而後者完全正確。程式演示 測試環境devc include using namespace std main 執行結果 2293628 4199056 abc 229...

c 中char 和 char 的區別

問題引入 在實習過程中發現了乙個以前一直預設的錯誤,同樣char c abc 和char c abc 前者改變其內 容程式是會崩潰的,而後者完全正確。程式演示 測試環境devc include using namespace std main 執行結果 2293628 4199056 abc 229...