我正在嘗試使用另一個表(DNI_Names)中的列的詳細信息搜索一個表(Asset_Database_Current)中的列。我寫了一個循環遍歷每個DNI_Name,然後SELECT CONTAINS語句(希望)將DNI_Name與Asset_Database_Current中的相關列進行比較。與CONTAINS苦苦掙扎(SQL Server 2008)
我已經設置了全文目錄,並且已將Asset_Database_Current表建立索引以便可搜索。
這是我的代碼有:
DECLARE
@Asset varchar(8)
, @software_Name VARCHAR(64)
, @dniSW VARCHAR(64)
, @DNI VARCHAR(64)
CREATE TABLE #temp_naughtyChildren (naughtyAsset CHAR(8), naughtySW VARCHAR(64))
--^where the Naughty People eventually get put
DECLARE #dni_cur CURSOR FOR
SELECT DNI_Names.DNI_Name
FROM DNI_Names
OPEN #dni_cur
FETCH NEXT FROM #dni_cur
INTO @DNI
WHILE @@FETCH_STATUS = 0
BEGIN -- we go through DNI_Names, selecting each instance of DNI_Name one at a time...
INSERT INTO #temp_naughtyChildren (naughtyAsset, naughtySW)
SELECT Asset_Number, Software_Name
FROM Asset_Database_Current
WHERE CONTAINS (Asset_Database_Current.Software_Name, @DNI)
FETCH NEXT FROM #dni_cur
INTO @DNI
END
DEALLOCATE #dni_cur
-- #temp_NaughtyChildren is now full of all the Asset Numbers and swName's of people who
-- have been very, very naughty. The table can now be used as required (emailed, sent to
-- another d/b, etc.).
SELECT * from #temp_NaughtyChildren ORDER BY naughtyAsset
DROP TABLE #temp_naughtyChildren
END
GO
上面的代碼成功完成,但是當我嘗試和執行查詢我碰到下面的錯誤兩次:
消息7630,15級,State 3,Procedure DNIChecker,Line 44 全文搜索條件'App Manager'中'Manager'附近的語法錯誤。
我的老闆也執行了查詢(他對數據庫擁有完全權限),並且他得到了完全相同的錯誤。
你可以給我的任何建議都會非常感激地收到(我從1998年起就沒有做過SQL,我意識到當他們在Uni教你SQL時,他們實際上並沒有教你太多的SQL,而且我也有花了最後2個半星期的時間來搜索各種網站,只有昨天,我終於偶然發現一篇文章提到有一個嚮導來設置全文搜索!!)。
感謝,男
我覺得你的循環是多餘的,因爲你在一個時間搜索一個關鍵字(看起來是這樣,對嗎?),你可以只是作爲@pln他們也通過'或'連接搜索多個關鍵字一次在他的回答中提到了(如果您想要使用不同的搜索詞可以找到同一行,則您可能不想丟失循環) – DrCopyPaste 2014-10-09 08:29:49