如何更改此SQL查询

时间:2009-11-25 18:10:57

标签: sql sql-server

SELECT * 
FROM dbo.tbh_table 
WHERE TopicID IN (
  SELECT value 
  FROM dbo.fn_split('19,',')
)

我必须更改上面的查询以执行如下所示的结果

SELECT * 
FROM dbo.tbh_table 
WHERE TopicID LIKE '%19,%'

我的topicID值类似于15,19,12,1 但是分裂会给出值15 19 12 1.因此我无法执行查询。

任何指导都会有所帮助

3 个答案:

答案 0 :(得分:2)

假设fn_split是一个表值函数(TVF),返回TABLE (value INT),请使用:

SELECT  t.*
FROM    dbo.tbh_table t
CROSS APPLY
        dbo.fn_split(TopicID) split
WHERE   split.value = 19

答案 1 :(得分:0)

您可以将您的ID添加到表变量中,然后与表变量连接以确定TopicID是否在表变量中。

DECLARE @DesiredIDs TABLE (
   DesiredID INT
)

INSERT INTO @DesiredIDs (DesiredID) Values (15)
INSERT INTO @DesiredIDs (DesiredID) Values (19)
INSERT INTO @DesiredIDs (DesiredID) Values (12)
INSERT INTO @DesiredIDs (DesiredID) Values (1)

select * from tbh_table t 
left join @DesiredIDs d on d.DesiredID = t.TopicID 
where d.DesiredID is not null

答案 2 :(得分:0)

如果我理解你的问题,你需要这样的东西:

SELECT * 
FROM dbo.tbh_table 
WHERE 19 IN ( 
  SELECT value 
  FROM dbo.fn_split(TopicId,',')
)