这是SQL查询:
DECLARE @objname nvarchar(255)
set @objname='漢字'
select @objname
当我在Microsoft SQL Server Management Studio中运行此查询时,得到以下信息:
??
问题:要在结果中获取汉字,我应该在SQL查询中进行任何更改吗?还是代码页等问题?
答案 0 :(得分:7)
您应该使用此:
{{1}}
答案 1 :(得分:4)
Object foo;
变量用NVarchar
表示,因此应该是
N'<Value>
现在,输出将被设置为DECLARE @objname nvarchar(255)
set @objname=N'漢字'
select @objname
。运行以上代码。
答案 2 :(得分:4)
在其他答案周围添加一些上下文:
您需要使用N
前缀(N代表“国家字符”)声明您的字符串分配,因为您需要明确表示要在此处传递包含Unicode字符的字符串(或nchar,ntext等)如果您使用的是这些。)
Microsoft's描述是
以字母N为前缀的Unicode字符串常量 信号UCS-2或UTF-16输入,取决于是否使用SC整理 是否使用。如果没有N前缀,则字符串将转换为 数据库的默认代码页可能无法识别某些 字符。从UTF-8开始的SQL Server 2019预览版开始 使用启用的归类,默认代码页可以存储 UNICODE UTF-8字符集。
因此,根据其他答案,您的作业将是set @objname = N'漢字'
您还应该注意在其他实例中使用前缀,例如在nvarchar
列上进行过滤时使用where子句,否则您会遇到诸如隐式转换导致的性能下降之类的问题。