我正在将一个宠物项目从PostgreSQL(9.2.2)移到SQL Server(2012 Standard)。
查询unicode字词时,我注意到了一个有趣的现象。给定定义:
CREATE TABLE [word](
[id] [int] IDENTITY(0,1) NOT NULL,
[value] [nvarchar](255) NULL
);
和数据:
insert into word (value) values (N'ῥύπῳ');
insert into word (value) values (N'ἀπὸ');
insert into word (value) values (N'ἀπό');
insert into word (value) values (N'ἐπὶ');
insert into word (value) values (N'ἐπί');
insert into word (value) values (N'ὑπὸ');
insert into word (value) values (N'ὑπό');
insert into word (value) values (N'πίῃ');
insert into word (value) values (N'λόγους');
insert into word (value) values (N'λόγχῃ');
insert into word (value) values (N'λόγων');
insert into word (value) values (N'ἀλόης');
对特定单词的查询将返回接近匹配项。例如:
select * from word where value = N'ἀπὸ'
返回:
id value
102137 ῥύπῳ
102141 ἀπὸ
102142 ἀπό
102143 ἐπὶ
102144 ἐπί
102145 ὑπὸ
102146 ὑπό
102147 πίῃ
http://sqlfiddle.com/#!6/1ab66/1
但是,PostgreSQL中的相同模式仅返回完全匹配。如何使SQL Server做到相同?
(PostgreSQL小提琴链接):http ://sqlfiddle.com/#!12/ c57a6/1
我有一种明显的感觉,我想念某些东西,但是我不太能弄清楚它是什么。
数据库排序规则是SQL_Latin1_General_CP1_CI_AS
本地安装上的数据库排序规则(也是服务器的排序规则)。