Estou no processo de mover um projeto 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 do violino PostgreSQL): http://sqlfiddle.com/#!12/c57a6/1
Tenho a nítida sensação de que estou perdendo alguma coisa, mas não consigo 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.
A ordenação determina a semântica de comparação.
se eu tentar
Ele só retorna
ἀπὸ
.Alterar o sufixo para
AI
retornos insensíveis a acentosἀπό
também.Na minha instalação, tentei todos os agrupamentos e
1526
retornos1
(presumivelmenteAS
eBIN
agrupamentos),1264
retorne 2 linhas (presumivelmenteAI
) e1095
retorne8
.De uma rápida olhada neste último grupo, parece incluir todos os
SQL
agrupamentos e90
agrupamentos, enquanto todos100
os que estão nos 2 primeiros grupos, então presumo que seja algum problema que foi corrigido no lote de agrupamentos de 2008. (Consulte O que há de novo nos agrupamentos do SQL Server 2008 )Script para tentar você mesmo