Estou no processo de mover um projeto para animais de estimação do PostgreSQL (9.2.2) para o SQL Server (2012 Standard).
Percebi um fenômeno interessante ao consultar palavras unicode. Dada a definição:
CREATE TABLE [word](
[id] [int] IDENTITY(0,1) NOT NULL,
[value] [nvarchar](255) NULL
);
e os dados:
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'ἀλόης');
uma consulta para uma palavra específica retornará correspondências próximas. Por exemplo:
select * from word where value = N'ἀπὸ'
retorna:
id value
102137 ῥύπῳ
102141 ἀπὸ
102142 ἀπό
102143 ἐπὶ
102144 ἐπί
102145 ὑπὸ
102146 ὑπό
102147 πίῃ
http://sqlfiddle.com/#!6/1ab66/1
No entanto, o mesmo padrão no PostgreSQL retorna apenas a correspondência exata. Como posso obter o SQL Server para fazer o mesmo?
(Link de violino do PostgreSQL): http://sqlfiddle.com/#!12/c57a6/1
Tenho a sensação distinta de que estou perdendo alguma coisa, mas não sou capaz de descobrir o que é.
O agrupamento do banco de dados é SQL_Latin1_General_CP1_CI_AS
(que também é o agrupamento do servidor) em uma instalação local.