代码之家  ›  专栏  ›  技术社区  ›  rs.

csv字符串中每个变量的SQL搜索列

  •  0
  • rs.  · 技术社区  · 16 年前

    我有一个变量传递给存储过程 前任:

    @keywords = 'val1, val3, val5'
    

    我想看看标题栏里有没有

    Ex: Title1 - 'Hello val1'
        Title2 - 'Hello val3'   
        Title3 - 'Hello val1, val3'  
        Title4 - 'Hello' 
    

    所以我的结果应该返回值

    Title
    ------
    Hello val1
    Hello val3
    Hello val1, val3
    

    是否可以使用like或任何其他函数/方法?

    2 回复  |  直到 16 年前
        1
  •  4
  •   gbn    16 年前

    您需要将csv拆分为行(请参见 Arrays and Lists in SQL Server 2005 and Beyond 对于各种技术如何)。我假设你创造了 dbo.ufnSplitRows 基于此

    然后使用like加入

    SELECT *
    FROM
        MYtable M
        JOIN
        dbo.ufnSplitRows (@CSV) C ON M.Title LIKE '%' + C.SplitValue + '%'
    

    顺便说一句,至少由于前面的“%”,它的运行会很糟糕。

        2
  •  2
  •   Adam Robinson    16 年前

    如果您对查询字符串的存储方式做了一些假设,那么是的(尽管它不是非常有效):

    假设:存储字符串时,每个项目都用逗号分隔,然后是空格。(这是您在问题中发布的内容)

    select * from YourTable where 
        (@keywords like KeyColumn + ', %') or
        (@keywords like '%, ' + KeyColumn + ', %') or
        (@keywords like '%, ' + KeyColumn)
    
    推荐文章