好吧,所以我正在進行基本搜索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