ペットプロジェクトを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
、ローカルインストール上にあります(これもサーバーの照合順序です)。