我可以在WHERE子句中放置WHILE循環嗎?我有一個存儲過程,我試圖把文本搜索功能。我有這樣的一個完全匹配的工作:SQL WHILE WHERE子句中的循環
AND (@exactString = ''
OR (CHARINDEX(@exactString, [Short Description]) > 0
OR CHARINDEX(@exactString, [Description]) > 0
OR CHARINDEX(@exactString, [Manufacturer]) > 0))
接下來,我試圖做一個「任何單詞」匹配和「所有單詞」匹配。我可以得到搜索字符串我想搜索與下面的while循環:
DECLARE @searchString varchar(max)
DECLARE @endIndex int
SET @allString = LTRIM(RTRIM(@allString))
WHILE LEN(@allString) > 0
BEGIN
SET @endIndex = CHARINDEX(' ', @allString) > 0
IF @endIndex > 0
BEGIN
SET @searchString = LEFT(@allString, @endIndex)
SET @allString = LTRIM(RTRIM(RIGHT(@allString, @endIndex)))
END
ELSE
BEGIN
SET @searchString = @allString
SET @allString = ''
END
END
現在我想用@searchString變量就像我上面使用@exactString。有沒有辦法在我的循環內做到這一點,或者是否有一些我錯過的其他技術可以在這裏工作?
感謝您的幫助, 丹
沒有任何理由,爲什麼你不使用[全文搜索(http://msdn.microsoft.com /en-us/library/ms142571.aspx)? – swasheck 2012-08-09 20:20:43
[搜索SQL Server索引中的詞]可能的重複(http://stackoverflow.com/questions/156954/search-for-words-in-sql-server-index) – Tony 2012-08-09 20:32:19
@swasheck - 我第一次碰到在研究這篇文章中的全文搜索時表示「假設你在SQL 2008上」,這是我們沒有的(2005),所以我認爲這對我不起作用。 – 2012-08-10 12:12:53