摘要:SQL - Varchar & NVarchar的不同(多國語系)。
心血來潮,To compare what the differnce between varchar and nvarchar ?
CREATE TABLE #temp( Column1 varchar(20), Column2 nvarchar(20))
--drop table #temp
insert into #temp (Column1,Column2) values ('私はあなたを愛して','私はあなたを愛して')
insert into #temp (Column1,Column2) values ('私はあなたを愛して',N'私はあなたを愛して')
insert into #temp (Column1,Column2) values (N'私はあなたを愛して',N'私はあなたを愛して')
select * from #temp
insert into temp select * from #temp
sp_columns temp
搜尋出如下
由第一筆資料我們可以觀察出 -- 如果insert語系外的文字會產生?號的情況。
由第二筆資料我們可以觀察出 -- 在insert的字串前面加上 N 可以解決語系問題。
由第三筆資料我們可以觀察出 -- Column1的insert就算加上了 N 還是沒辦法決解此情況。
由以上推論,可支多國語系的資料存取需要使用NVarchar的欄位型態較為恰當。
BTW 欄位的長度也會有所不同
由此可以得知NVarch(20) Varchar(20) ,雖然長度相同,但是位元組卻是不相同的。
這裡還有幾個問題在心頭圍繞
- 系統會自動偵測使用者IP做切換語言?
- 系統對使用者Brower做語言切換?
- 建立不同的Domain或語系切換 ?
- 記錄使用者習慣 ? (Big Data)