我可以在 WHERE 子句中放置一个 WHILE 循环吗?我有一个存储过程,我试图在其中加入文本搜索功能。我让它为这样的完全匹配工作:
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
现在我想像上面使用@exactString 一样使用@searchString 变量。有没有办法在我的循环中做到这一点,或者我是否缺少其他一些可以在这里工作的技术?
谢谢你的帮助,丹