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

Posted

技术标签:

【中文标题】将特殊字符(大于/小于或等于符号)插入 SQL Server 数据库【英文标题】:Inserting special characters (greater/less than or equal symbol) into SQL Server database 【发布时间】:2012-08-15 05:57:17 【问题描述】:

我正在尝试将 插入到列类型为nvarchar 的符号表中。

这可能还是 SQL Server 中不允许使用这些符号?

【问题讨论】:

如果N 不是默认排序规则中的标准字符,请添加前缀。 【参考方案1】:

为了使它起作用,在字符串前面加上N

create table symboltable 
(
  val nvarchar(10)
)

insert into symboltable values(N'≥') 

select *
from symboltable 

进一步阅读

You must precede all Unicode strings with a prefix N when you deal with Unicode string constants in SQL Server Why do some SQL strings have an 'N' prefix?

【讨论】:

无论如何,如果没有您的反对,我不会得到正确的答案。这让我做一些研究。谢谢! 谢谢。完全忘记了 N 前缀。 它对我有什么作用? ***.com/questions/32253235/… 谢谢。【参考方案2】:

要添加到 gonzalo 的答案,字符串文字字段都需要支持 unicode 字符

字符串字面量

Marc Gravell 在What does N' stands for in a SQL script ? 上的回答:

'abcd'<i>[var]</i>char 字符串的文字,占用 4 字节内存,并使用 SQL 服务器配置的任何代码页N'abcd' 是文字为<b>n</b><i>[var]</i>char字符串,占用8字节内存,使用UTF-16。

N 前缀在 SQL-92 标准中代表“国家”语言,用于表示 unicode 字符。例如,在以下代码中,基本字符串文字中的任何 unicode 字符首先被编码到 SQL Server 的“代码页”中:

旁白:您可以使用以下 SQL check your code page:

SELECT DATABASEPROPERTYEX('dbName', 'Collation') AS dbCollation;
SELECT COLLATIONPROPERTY( 'SQL_Latin1_General_CP1_CI_AS' , 'CodePage' ) AS [CodePage];

默认是Windows-1252,只有contains these 256 characters

字段类型

一旦值能够被传递,它们还需要能够存储到column that supports unicode types,例如:

nchar nvarchar ntext

进一步阅读

Why do we need to put N before strings in Microsoft SQL Server? What is the meaning of the prefix N in T-SQL statements? You must precede all Unicode strings with a prefix N when you deal with Unicode string constants in SQL Server Why do some SQL strings have an 'N' prefix?

【讨论】:

以上是关于将特殊字符(大于/小于或等于符号)插入 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章

sql 语句中 符号是啥意思?

linux学习:特殊符号,数学运算,图像与数组与部分终端命令用法整理

Mybatis 特殊符号(大于,小于,不等于)及常用函数总结

小于等于号在电脑上怎么打?

英文符号的意思

xml CDATA区、特殊字符:<= 小于等于、>= 大于等于