Sql-Server-2019
結合全文搜尋和正常比較時結果不正確
create table "Foo" ( "id" integer identity (1000, 1) not null, "name" nvarchar(100) not null ) alter table "Foo" add constraint "Foo_PK" primary key ("id"); create fulltext index on "Foo" ("name" language 0x0) key index "Foo_PK" on "catalog" with stoplist = off;
以下查詢不返回任何行
select * from "Foo" where contains("name", ' "پ*" ') and "id" > 1082;
雖然有 26 行匹配
contains("name", ' "پ*" ')
,87行"id" > 1082
單獨匹配。以下兩個查詢共有 23 行,奇怪的是,它們的交集沒有返回任何行。select * from "Foo" where contains("name", ' "پ*" '); select * from "Foo" where "id" > 1082;
更奇怪的是,下面的查詢正好返回 23 行。所有“id”都在 1082 以上。
select * from "Foo" where contains("name", ' "پ*" ') and "id" > 1081;
有人請解釋一下 SQL Server 中發生了什麼。
我認為您的主要問題是您對 Unicode 數據使用非 Unicode 字元串分隔符。
比較:
SELECT ' "پ*" '; SELECT N' "پ*" '; -------^ this N is important
我可以簡單地通過刪除並再次創建索引來修復它。仍然不知道它為什麼會發生以及將來如何防止它發生。