在 SQL Server 表中存储一些特殊字符
Posted
技术标签:
【中文标题】在 SQL Server 表中存储一些特殊字符【英文标题】:Storing some special characters in SQL Server tables 【发布时间】:2018-03-30 06:30:47 【问题描述】:我有以下疑问:
update Qtable
set Q1 = ' If the alternative
hypothesis is as Ha : µ ≠µ0 ;
where QID = '856'
Q1
的数据类型为 nvarchar(max)
。
现在我在数据库中更新并看到不是Ha : µ ≠µ0
,我得到了
Ha : µ ?µ0
不知道为什么更新语句用 ≠ 代替?我知道它是一个特殊字符,但应该应用哪些设置来保留该值?
【问题讨论】:
如果您想使用基于 Unicode 的字符串文字(并“保留”这些特殊字符),您必须在它们前面加上N
- set Q1 = N'.......'
【参考方案1】:
您需要确保在 Unicode 字符串文字前加上 N 前缀。 像这样:
update Qtable set Q1=' If the alternative
hypothesis is as Ha :'+ N'µ ≠µ0' ;
where QID='856'
QUERY 1:(旧查询字符串)
SELECT 'If the alternative
hypothesis is as Ha:µ ≠µ0';
输出:
If the alternative hypothesis is as Ha:µ ?µ0
QUERY 2:(新查询字符串)
SELECT 'If the alternative
hypothesis is as Ha:' + N'µ ≠µ0';
输出:
If the alternative hypothesis is as Ha:µ ≠µ0
用于演示检查此链接:
http://sqlfiddle.com/#!18/adfb7/1
如果您不使用 NVARCHAR,那么您的 not equal character
将被其他字符替换。
Nvarchar 存储 UNICODE 数据。如果您有存储需求 UNICODE 或多语言数据,nvarchar 是选择。瓦查尔商店 ASCII 数据,应该是您正常使用的首选数据类型。
【讨论】:
我正在使用 nvarchar(max)【参考方案2】:使用这个语句:
update Qtable
set Q1 = N'If the alternative hypothesis is as Ha : µ ≠µ0'
where QID = '856'
【讨论】:
以上是关于在 SQL Server 表中存储一些特殊字符的主要内容,如果未能解决你的问题,请参考以下文章
将特殊字符(大于/小于或等于符号)插入 SQL Server 数据库