我有一个SQL Server 2008数据库和一个表的nvarchar(256)
字段。疯狂的问题是当我运行这个查询时:
update ruds_values_short_text
set value = '≤ asjdklasd'
where rud_id=12202 and field_code='detection_limit'
然后
select * from ruds_values_short_text
where rud_id=12202 and field_code='detection_limit'
我得到了这个结果:
12202 detection_limit = asjdklasd 11
您可以看到字符≤已在=
中转换这是一个与编码相关的问题,实际上,如果我尝试在Notepad ++中粘贴'≤',它会粘贴'='但是当我将ANSI转换为UTF-8时我得'≤'。
所以..我想我应该用UTF8编写查询..但是怎么样?感谢。
答案 0 :(得分:7)
您需要使用N
前缀,以便将文字视为Unicode,而不是将其视为数据库默认排序规则的代码页中的字符数据。
update ruds_values_short_text
set value = N'≤ asjdklasd'
where rud_id=12202 and field_code='detection_limit'
答案 1 :(得分:1)
试试update ruds_values_short_text set value = N'≤ asjdklasd' where rud_id=12202 and field_code='detection_limit'
。 N表示您提供的是国家语言,因此它尊重编码。