Tôi đang trong quá trình chuyển một dự án thú cưng từ PostgreSQL (9.2.2) sang SQL Server (Tiêu chuẩn 2012).
Tôi đã nhận thấy một hiện tượng thú vị khi truy vấn các từ unicode. Đưa ra định nghĩa:
CREATE TABLE [word](
[id] [int] IDENTITY(0,1) NOT NULL,
[value] [nvarchar](255) NULL
);
và dữ liệu:
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'ἀλόης');
một truy vấn cho một từ cụ thể sẽ trả về gần khớp. Ví dụ:
select * from word where value = N'ἀπὸ'
trả về:
id value
102137 ῥύπῳ
102141 ἀπὸ
102142 ἀπό
102143 ἐπὶ
102144 ἐπί
102145 ὑπὸ
102146 ὑπό
102147 πίῃ
http://sqlfiddle.com/#!6/1ab66/1
Tuy nhiên, mẫu tương tự trong PostgreSQL chỉ trả về kết quả khớp chính xác. Làm cách nào để SQL Server thực hiện tương tự?
(Liên kết fiddle PostgreSQL): http://sqlfiddle.com/#!12/c57a6/1
Tôi có cảm giác khác biệt rằng tôi đang thiếu một cái gì đó, nhưng tôi không hoàn toàn có thể tìm ra nó là gì.
Đối chiếu cơ sở dữ liệu là SQL_Latin1_General_CP1_CI_AS
(cũng là đối chiếu của máy chủ) trên bản cài đặt cục bộ.