好吧,所以我正在进行基本搜索SPROC。 参数之一是一个搜索文本(这将是测试用户输入,单词由空格等分开)'简单'SQL搜索查询
现在我需要的是在表中的单个列上搜索这些单词,但我希望它具有所有输入的关键字(目前我所能做的就是如果其中一个存在)
那么是否有一个特殊的SQL命令允许我这样做?
好吧,所以我正在进行基本搜索SPROC。 参数之一是一个搜索文本(这将是测试用户输入,单词由空格等分开)'简单'SQL搜索查询
现在我需要的是在表中的单个列上搜索这些单词,但我希望它具有所有输入的关键字(目前我所能做的就是如果其中一个存在)
那么是否有一个特殊的SQL命令允许我这样做?
你可以尝试这样的事情
检查所需要的话occurances,并比较分裂的话计数。
所有的问题,我预见是匹配部分单词,但是这可能让你开始
/*
ALTER FUNCTION [dbo].[SplitString]
(
@String VARCHAR(8000) ,
@Delimiter VARCHAR(10)
)
RETURNS @RetTable TABLE(
String varchar(1000)
)
AS
BEGIN
DECLARE @i INT ,
@j INT
SELECT @i = 1
WHILE @i <= LEN(@String)
BEGIN
SELECT @j = CHARINDEX(@Delimiter, @String, @i)
IF @j = 0
BEGIN
SELECT @j = LEN(@String) + 1
END
INSERT @RetTable SELECT SUBSTRING(@String, @i, @j - @i)
SELECT @i = @j + LEN(@Delimiter)
END
RETURN
END
*/
DECLARE @SearchString VARCHAR(MAX)
SELECT @SearchString = 'your,of'
DECLARE @SearchStringTable TABLE(
Words VARCHAR(MAX)
)
DECLARE @TABLE TABLE(
Col VARCHAR(MAX)
)
INSERT INTO @TABLE (Col)
SELECT
'On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document.'
INSERT INTO @TABLE (Col)
SELECT
'You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks.'
INSERT INTO @TABLE (Col)
SELECT
'When you create pictures, charts, or diagrams, they also coordinate with your current document look.'
INSERT INTO @SearchStringTable (Words) SELECT * FROM dbo.SplitString(@SearchString,',')
SELECT t.Col,
COUNT(1) AS Number
FROM @TABLE t,
@SearchStringTable s
WHERE CHARINDEX(s.Words,t.Col) > 0
GROUP BY t.Col
HAVING COUNT(1) = (SELECT COUNT(1) FROM @SearchStringTable)
这似乎工作得很好!谢谢! – dkarzon
您需要将@SEARCH_TEXT拆分为单词并理想地将其存储在临时表@FILTER_TABLE中,其中包含单词的一列WORD。你可以谷歌的“SQL逗号分割...”,但回答this question可能会有所帮助。 This也很有趣。
然后,您只需在您的查询中使用JOIN来过滤行。最简单的查询,那么这将返回所有的比赛将是:
SELECT t.*
f.WORD
FROM MyTable t
JOIN @FILTER_TABLE f
ON t.MyColumn = f.WORD --// = or LIKE operator
但是,如果你提供你的数据和预期结果的例子,人们可能会更有帮助。
问题与2个答案是搜索词总是会有所不同。我可以将这些词汇转换成表格,但是我仍然不太确定如何搜索它们,因为我可以在该表格上做一个IN,但这仍然是同样的问题... – dkarzon