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

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

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

【问题讨论】:

  • 如果N 不是默认排序规则中的标准字符,请添加前缀。

标签: sql-server unicode nvarchar


【解决方案1】:

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

create table symboltable 
(
  val nvarchar(10)
)

insert into symboltable values(N'≥') 

select *
from symboltable 

进一步阅读

【讨论】:

  • 无论如何,如果没有您的反对,我不会得到正确的答案。这让我做一些研究。谢谢!
  • 谢谢。完全忘记了 N 前缀。
  • 它对我有什么作用? stackoverflow.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

进一步阅读

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多