SQL Server:对另一个select

时间:2015-05-13 18:26:57

标签: sql-server

我有一个SQL Server存储过程,它接收逗号分隔的字符串作为参数。

我还有一个表值函数,它接受这个参数,将它分开(在逗号之间)并作为'table'返回。

此程序是使用LIKE运算符查找匹配字词的“搜索​​程序”。

如何循环遍历已转换为表格的参数并将其与LIKE进行比较?

我需要的顺序是这样的:

  1. 已调用SQL Server过程,并且已将分隔的逗号字符串作为参数传递。
  2. 调用表值函数来剥离此字符串并将其转换为结果表。 (这不是真正的表,只是结果)。直到我已经完成,下一部分是我需要帮助的部分:
  3. 遍历最近创建的“表格”并搜索另一个表格的特定列。
  4. 例如

    SELECT * 
    FROM tbl_names 
    WHERE col_names LIKE '%' + (the search term here) + '%'
    

2 个答案:

答案 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

如果您只想返回具有匹配项的行,请使用交叉申请,如果您希望所有行都包含项数,请使用外部。

注意:代码示例未经测试