阿nvarchar
列可以存儲任何Unicode數(shù)據(jù)。一個varchar
列僅限于8位代碼頁.有些人認(rèn)為varchar
應(yīng)該被使用,因為它占用的空間更少。我相信這不是正確的答案。代碼頁不匹配是一種痛苦,Unicode是解決代碼頁問題的方法?,F(xiàn)在有了便宜的磁盤和內(nèi)存,就沒有理由再浪費時間在代碼頁上閑逛了。
所有現(xiàn)代操作系統(tǒng)和開發(fā)平臺都在內(nèi)部使用Unicode。用nvarchar
而不是varchar
,您可以避免每次從數(shù)據(jù)庫讀取或?qū)懭霐?shù)據(jù)庫時進(jìn)行編碼轉(zhuǎn)換。轉(zhuǎn)換需要時間,而且容易出錯。從轉(zhuǎn)換錯誤中恢復(fù)是一個非平凡的問題。
如果您與只使用ASCII的應(yīng)用程序進(jìn)行接口,我仍然建議在數(shù)據(jù)庫中使用Unicode。操作系統(tǒng)和數(shù)據(jù)庫排序算法將更好地與Unicode一起工作。接口時,Unicode避免了轉(zhuǎn)換問題。其他系統(tǒng)。你將為未來做好準(zhǔn)備。而且,您可以始終驗證您的數(shù)據(jù)僅限于7位ASCII,用于任何您必須維護(hù)的遺留系統(tǒng),即使在享受完整Unicode存儲的一些好處的同時也是如此。