将特殊字符(大于/小于或等于符号)插入 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章
linux学习:特殊符号,数学运算,图像与数组与部分终端命令用法整理