我刚刚继承了一个项目,其代码类似于以下(相当简单)示例:
DECLARE @Demo TABLE
(
Quantity INT,
Symbol NVARCHAR(10)
)
INSERT INTO @Demo (Quantity, Symbol)
SELECT 127, N'IBM'
我感兴趣的是字符串文字之前的 N
。
我知道前缀 N
是指定编码(在本例中为 Unicode)。但是由于 select 只是为了插入到显然已经是 Unicode 的字段中,所以这个值不会自动向上转换吗?
我已经在没有 N
的情况下运行了代码,它似乎可以工作,但是我是否遗漏了前一个程序员想要的东西?还是 N
是他/她的疏忽?
我期望的行为类似于将 int
传递给 decimal
字段(自动向上转型)。我可以去掉那些N
吗?
最佳答案
您的测试并不是真正有效,请尝试使用中文字符之类的内容,我记得如果您不加前缀,它将不会插入正确的字符
例如,第一个显示问号,而底部显示一个正方形
select '作'
select N'作'
一个更好的例子,即使在这里输出也不一样
declare @v nvarchar(50), @v2 nvarchar(50)
select @v = '作', @v2 = N'作'
select @v,@v2
既然你看起来像一个股票表,为什么你使用unicode,甚至有没有unicode的符号..我从来没有见过任何,这包括ISIN,CUSIPS和SEDOLS
关于TSQL 在插入时添加字符串文字前缀 - 有任何值,还是冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924720/