我在SQL Server 2008r2上遇到了使用CONTAINS函數未返回完全相同字符串匹配的問題。我很確定我誤解了CONTAINS的一些內容。Transact SQL CONTAINS不匹配具有通配符的相同字符串
我已經設置了以下測試用例來複制它。
CREATE TABLE texttest
(
loldex INT PRIMARY KEY IDENTITY,
testcolumn NVARCHAR(255)
)
GO
INSERT INTO texttest
VALUES('2ND ACADEMY OF NATURAL SCIENCES')
GO
CREATE UNIQUE INDEX ui_loldex ON [texttest](loldex);
CREATE FULLTEXT INDEX ON [texttest]([testcolumn])
KEY INDEX ui_loldex
CREATE FULLTEXT CATALOG ft AS DEFAULT;
GO
然後我運行下面的查詢:
SELECT [testcolumn]
FROM [texttest]
WHERE CONTAINS(testcolumn, '"2ND ACADEMY OF NATURAL SCIENCES*"')
而且它沒有返回。
但是,如果我運行:
SELECT [testcolumn]
FROM [texttest]
WHERE CONTAINS(testcolumn, '"2ND ACADEMY*"')
它返回的行。
如果我在通配符Y之後的字符串中使用更多的字符,我什麼也得不到。
如果我刪除了通配符,我從相同的字符串中得到該行。但是,我已經嘗試了與其他字符串的通配符,它的工作正常。據我所知,通配符代表0個或更多的附加字符,所以我不明白爲什麼它在這種情況下不起作用。
任何想法,我在這裏失蹤?
它應該如你期望的那樣發現它,但是perh aps在Y之後實際上有一個雙倍的空間。將數據庫中的值複製到記事本中,並確認您只有一個空格。其實請檢查以確保每個單詞之間有一個單獨的空格。 – Elijah
我已經檢查過了。實際上,我通過將表格直接從表格中剪切並粘貼到搜索中來執行搜索,但仍然失敗。 – CodingUnderDuress
您是否嘗試過使用'%'而不是'*'?考慮到CONTAINS是一種模糊匹配方法,爲什麼還需要通配符? – PaulFrancis