2014-10-09 38 views
0

我正在嘗試使用另一個表(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個半星期的時間來搜索各種網站,只有昨天,我終於偶然發現一篇文章提到有一個嚮導來設置全文搜索!!)。

感謝,男

+0

我覺得你的循環是多餘的,因爲你在一個時間搜索一個關鍵字(看起來是這樣,對嗎?),你可以只是作爲@pln他們也通過'或'連接搜索多個關鍵字一次在他的回答中提到了(如果您想要使用不同的搜索詞可以找到同一行,則您可能不想丟失循環) – DrCopyPaste 2014-10-09 08:29:49

回答

0

CONTAINS需要四處搜尋條件qoutes如果使用滿語,否則你應該在單詞之間使用NEAR,AND,OR。

SET @DNI = '"' + @DNI + '"'; 
INSERT INTO #temp_naughtyChildren (naughtyAsset, naughtySW) 
SELECT Asset_Number, Software_Name 
FROM Asset_Database_Current 
WHERE CONTAINS (Asset_Database_Current.Software_Name, @DNI) 
+0

不幸的是,給我: 「語法不正確+'。 – Matthew 2014-10-09 08:00:11

+0

對不起,我修改了答案 – pln 2014-10-09 08:10:32

+0

這並不是第一次工作(出於某種原因,儘管我懷疑SQL Server 2008是由微小的喜怒無常的Gremlins操作的),但它確實是第二次工作。非常感謝你的幫助! – Matthew 2014-10-09 11:20:49

相關問題