我有一个SQL Server存储过程,它接收逗号分隔的字符串作为参数。
我还有一个表值函数,它接受这个参数,将它分开(在逗号之间)并作为'table'返回。
此程序是使用LIKE
运算符查找匹配字词的“搜索程序”。
如何循环遍历已转换为表格的参数并将其与LIKE
进行比较?
我需要的顺序是这样的:
例如
SELECT *
FROM tbl_names
WHERE col_names LIKE '%' + (the search term here) + '%'
答案 0 :(得分:1)
您可以在表格中加入您的功能结果:
select * from SomeTable st
join dbo.SomeFunction(@str) sf on st.SomeColumn like '%' + sf.Term +'%'
按出现顺序执行以下操作:
select * from SomeTable st
join(
select st.ID, count(*) as Occurence from SomeTable st
join dbo.SomeFunction(@str) sf on st.SomeColumn like '%' + sf.Term +'%'
group by st.ID) ot on st.ID = ot.ID
order by ot.Occurence desc
答案 1 :(得分:0)
如果您想知道匹配的项目数量,我可能会使用patindex进行交叉或外部申请
select S.*, m.matches
from sometable s
cross apply (select count(1) as matches from finction where patindex ('%' + function.Column + '%', s.coltosearch) > 1) as matched
如果您只想返回具有匹配项的行,请使用交叉申请,如果您希望所有行都包含项数,请使用外部。
注意:代码示例未经测试