【发布时间】:2012-08-15 05:57:17
【问题描述】:
我正在尝试将≤ 和≥ 插入到列类型为nvarchar 的符号表中。
这可能还是 SQL Server 中不允许使用这些符号?
【问题讨论】:
-
如果
N不是默认排序规则中的标准字符,请添加前缀。
标签: sql-server unicode nvarchar
我正在尝试将≤ 和≥ 插入到列类型为nvarchar 的符号表中。
这可能还是 SQL Server 中不允许使用这些符号?
【问题讨论】:
N 不是默认排序规则中的标准字符,请添加前缀。
标签: sql-server unicode nvarchar
为了使它起作用,在字符串前面加上N
create table symboltable
(
val nvarchar(10)
)
insert into symboltable values(N'≥')
select *
from symboltable
进一步阅读:
【讨论】:
要添加到 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];
一旦值能够被传递,它们还需要能够存储到column that supports unicode types,例如:
ncharnvarcharntext进一步阅读:
【讨论】: