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