我有一个TableA
,如下所示,其中为列Name
指定了全文索引
表A
Id (PK)
Name (TXI)
该表格有以下记录:
ingrid
neville
ned
audry
inga
然后我对表运行以下查询:
SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');
查询结果如下:
Id Name
1 ingrid
2 neville
3 ned
为什么它会返回第一条记录,即使它不以'n'开头?
答案 0 :(得分:0)
尝试:
SELECT * FROM TableA WHERE CONTAINS(Name,'n*');
答案 1 :(得分:0)
您的全文索引可能已过期。重建它会解决您的问题吗?
答案 2 :(得分:0)
按照Jim B的建议尝试通过以下方式更新您的目录:
ALTER FULLTEXT CATALOG TableA REORGANIZE
然后
SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');
另一个提示:全文的目的是在文本中搜索单词所以我不知道你是在测试全文但是要得到你想要的东西,他们正确的方式是LIKE
运算符:
SELECT * FROM TableA WHERE Name LIKE 'n%';
答案 3 :(得分:0)
您的查询对我有用....:
TRUNCATE TABLE FTS_Demo_2
INSERT FTS_Demo_2 (Document) VALUES ('ingrid')
INSERT FTS_Demo_2 (Document) VALUES ('neville')
INSERT FTS_Demo_2 (Document) VALUES ('ned')
INSERT FTS_Demo_2 (Document) VALUES ('audry')
INSERT FTS_Demo_2 (Document) VALUES ('inga')
/* WAIT FOR AUTO POPULATION TO POPULATE */
SELECT * FROM FTS_Demo_2 WHERE CONTAINS (Document, '"n*"')
结果:
RecordID Document
----------- --------------------
2 neville
3 ned
(2 row(s) affected)
您的FTS索引或目录可能有问题吗?你的专栏类型是什么?我在这个例子NVARCHAR(MAX)中创建了这个列,这是目录属性: