我有一个传递给存储过程的变量 例如:
@keywords = 'val1, val3, val5'
我正在尝试查看名为Title的列是否包含其中任何一个
Ex: Title1 - 'Hello val1'
Title2 - 'Hello val3'
Title3 - 'Hello val1, val3'
Title4 - 'Hello'
所以我的结果应该返回值
Title
------
Hello val1
Hello val3
Hello val1, val3
这可以使用LIKE或任何其他功能/方法吗?
答案 0 :(得分:4)
您需要将CSV拆分为行(有关variuos技术的信息,请参阅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 + '%'
顺便说一下,由于领先的'%'至少
,它将运行不佳答案 1 :(得分:2)
如果你对查询字符串的存储方式做了一些假设,那么肯定(虽然效率不高):
假设:字符串将与每个以逗号分隔的项目存储,然后存储空格。 (这是你在问题中发布的内容)
select * from YourTable where
(@keywords like KeyColumn + ', %') or
(@keywords like '%, ' + KeyColumn + ', %') or
(@keywords like '%, ' + KeyColumn)