TSQL 在插入时添加字符串文字前缀 - 有任何值,还是冗余?

标签 tsql unicode casting

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

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/

相关文章:

sql-server - 使用 T-SQL 获取日期时间的时间

PHP 使用来自 SQL Server 2012 的 MSSQL_Query 调用存储过程返回无效值

python - 将 utf-8 写入 Excel CSV

python - python 中的智能类型转换

sql-server - 使用 ROW_NUMBER 增加 100?

sql-server - 是否可以直接在 T-SQL 语言中计算 MD5 哈希?

unicode - 应在输出中过滤的 Unicode 字符列表?

c - 如何在保留(非)字母数字属性的同时将多字节 UTF-8 字符表示转换为一个字节?

c++ - 如何将模板函数的所有参数隐式转换为最高分辨率类型?

c# - 如何将 A<T> 类型的泛型对象转换为 A<T'>?