T-SQL 字符串前加 N 是什麼意思

比如 select @status = N'stopped'
那麼其中的字符串 stopped 前面爲什麼要加 N 呢?而且我們發現有些地方加 N 與否都沒有影響,有些地方又必須加 N。
N 在這裏表示 Unicode,就是雙字節字符。對於西文字符,用一個字節來存儲過足夠了,對於東方文字字符,就需要兩個字節來存儲。Unicode 爲了統一、規範、方便、兼容,就規定西文字符也用兩個字節來存儲。
也就是說加 N 就表示字符串用 Unicode 方式存儲。
但有時候加與不加都一樣,又是什麼原因呢?這是由於自動轉換造成的。
比如:
declare @status nvarchar(20)
select @status = N'stopped'
select @status = 'stopped'
實際上上述兩句賦值的結果是一樣的,因爲變量類型就是 nvarchar(Unicode 類型)。
而有些地方(比如:sp_executesql 的參數)不能自動轉換,所以需要加 N 了。

 

實例:

  如果你的環境爲english,  
   
  你select   '中國'  
  結果是亂碼  
   
  你select     N'中國',以unicode編碼,那麼那些非單字節字符可以正常顯示,  
  結果就會正常顯示中國

發佈了83 篇原創文章 · 獲贊 5 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章