SQL - What's difference between Varchar and NVarchar(多國語系)。

  • 844
  • 0
  • SQL
  • 2015-03-27

摘要: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) ,雖然長度相同,但是位元組卻是不相同的。

 

 

這裡還有幾個問題在心頭圍繞

  1. 系統會自動偵測使用者IP做切換語言?
  2. 系統對使用者Brower做語言切換?
  3. 建立不同的Domain或語系切換 ?
  4. 記錄使用者習慣 ? (Big Data)