插入时的TSQL前缀字符串文字 - 对此的任何值还是冗余?

Set*_*thO 11 t-sql unicode casting

我刚刚继承了一个代码类似于以下(相当简单)示例的项目:

DECLARE @Demo TABLE
(
    Quantity INT,
    Symbol NVARCHAR(10)
)

INSERT INTO @Demo (Quantity, Symbol)
SELECT 127, N'IBM'
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是N字符串文字之前.

我知道前缀N是指定编码(在本例中为Unicode).但由于select仅用于插入显然已经是Unicode的字段,因此该值不会自动向上转换吗?

我没有运行代码N,它似乎工作,但我错过了以前程序员的意图吗?或者是N他/她的疏忽?

我希望行为类似于我传递int给一个decimal字段时的行为(自动向上播放).我可以摆脱那些N吗?

SQL*_*ace 10

你的测试不是真的有效,尝试类似中文字符的东西,我记得如果你不加前缀它就不会插入正确的字符

例如,第一个显示问号而底部显示正方形

select '?'

select N'?'
Run Code Online (Sandbox Code Playgroud)

一个更好的例子,即使在这里输出也不一样

declare @v nvarchar(50), @v2 nvarchar(50)

select @v = '?', @v2 = N'?'

select @v,@v2
Run Code Online (Sandbox Code Playgroud)

既然你看起来像一个股票表为什么你使用unicode,甚至有unicode的符号..我从来没有见过任何,这包括ISIN,CUSIPS和SEDOLS