天天看點

【SQL SERVER】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 了。