在 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如何存储特殊字符上标下标

SQL Server 存储过程来搜索不带特殊字符的值列表

SQL Server查询中特殊字符的处理方法

将特殊字符(大于/小于或等于符号)插入 SQL Server 数据库

在 python 中,将数据插入 SQL Server 时如何转义特殊字符?

SQL SERVER 触发器