SQL:搜索包含在数组中的文本

时间:2014-10-21 08:45:59

标签: sql-server arrays tsql

我有一个用于搜索的选择查询,我的@SearchText可以由几个单词组成

我想将单词分成数组并选择某些文本是否包含我的搜索文本

查询:

ALTER PROCEDURE [dbo].[myStoreProcedure]
@SearchText varchar(100)
AS 
BEGIN
SELECT * FROM t0 
        WHERE 
ISNULL(@SearchText, '')='' OR t0.title LIKE '%' +@SearchText + '%')

现在我想要:  如果我搜索字符串'adam smith'或'smith adam'结果必须相同

如何将 @SearchText 转换为数组并从表格中提取行 - t0 ,其中title以任何顺序包含我的@SearchText

2 个答案:

答案 0 :(得分:2)

尝试使用CONTAINS运算符:

ALTER PROCEDURE [dbo].[myStoreProcedure]
@SearchText varchar(100)
AS 
BEGIN
SELECT * FROM t0 
        WHERE 
ISNULL(@SearchText, '')='' OR CONTAINS(t0.title,@SearchText)

您可以使用CONTAINS运算符进行更通用的搜索。

答案 1 :(得分:1)

当我传输参数时,需要删除双空格并在单词之间添加" OR"像这样:

searchText = searchText.Replace("  ", " ").Replace(" ", " OR ");
command.Parameters.Add("@SearchText", SqlDbType.VarChar, 200).Value = searchText;

在SQL中:

((@SearchText = '""') OR CONTAINS(t0.title, @SearchText))