Я нахожусь в процессе перемещения любимого проекта из PostgreSQL (9.2.2) в SQL Server (стандарт 2012).
Я заметил интересный феномен, когда запрашивал слова в юникоде. Учитывая определение:
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
(которые также являются параметрами сортировки сервера) при локальной установке.
источник