定長的存儲ASCII碼字節數據,過去使用這種類型保存數據,可是因爲定長勢必浪費存儲空間;可是效率高oracle
不定長的存儲ASCII碼字節數據,即便初始化空間爲5,若是隻存儲長度爲3的字節,大家也只是佔用3個字節的空間;相比char,varchar能夠大量節約空間,可是在效率上稍低,緣由是長度的判斷致使要移位操做,不過這種影響小的能夠不用計算,因此在開發中儘可能使用varchar;
編碼
不定長的存儲字符數據,這個與varchar的最大區別就是,varchar存儲的是字節,而nvarchar存儲的字符,也就是說,若是你初始化的空間是5的話,那麼意思是申請了5個字符的空間,對於Unicode編碼咱們知道不一樣字符所佔的字節是不同的,可是英文只是一個字節就能知足,中文就不同了,因此,若是你採用nvarchar做爲存儲英文的話,那就是大量浪費空間。spa
varchar2是oracle可變長的數據類型,在SqlServer中稱爲varchar,他的特色就是可變長,好比定義表的時候採用code
FNAME varchar2(20) 意思是FNAME字段最大采用20個字節存儲,每一個字節就是一個8位,也就是 0-127 的ASCII碼,實際上這個FNAME的字符串長度就是最大爲 20 ,可是不必定爲 20;他是不能存儲非ASCII碼字符的;orm
nvarchar2 是oracle可變長的數據類型,在SqlServer中稱爲nvarchar,他的特色是變長,並且每一位都是用Unicode編碼存儲,好比定義表的時候採用 FNAME nvarchar2(20) 意思是FNAME字段最大采用20個Unicode字符存儲,每一個字符佔用2個字節,兩個字節與Unicode的標準碼對應;實際上這個FNAME的字符串長度就是最大爲 20 ,可是不必定爲 20
開發
char:定長存儲ASCII碼字節字符串
nchar:定長儲存Unicode字符it
varchar:變長儲存ASCII碼字節效率
nvarchar:變長儲存Unicode字符數據類型