Sql server 2005 将参数传递给SQL Server中的IN子句

Sql server 2005 将参数传递给SQL Server中的IN子句,sql-server-2005,stored-procedures,in-clause,Sql Server 2005,Stored Procedures,In Clause,可能的重复项: 嗨 我在将参数传递给'IN'子句时遇到问题。我正在使用下面的查询 查询: SELECT Topics.Topic_Id FROM Topics Where Topic_Description IN (''+ @Topics +'') 当参数只有一个值时,此查询工作。我的参数可以有逗号分隔的多个值,如:“一”、“二”、“三”、“四”。但只要有多个参数,查询就会失败。如何克服这一点?请建议 谢谢 我必须将上述内容用作存储过程的一部分。我必须将select查询

可能的重复项:

我在将参数传递给'IN'子句时遇到问题。我正在使用下面的查询

查询:

SELECT Topics.Topic_Id  FROM Topics 
    Where Topic_Description IN (''+ @Topics +'')    
当参数只有一个值时,此查询工作。我的参数可以有逗号分隔的多个值,如:“一”、“二”、“三”、“四”。但只要有多个参数,查询就会失败。如何克服这一点?请建议

谢谢

我必须将上述内容用作存储过程的一部分。我必须将select查询的结果放入如下光标中:

将cur_TopicIDs游标声明为 从其中的主题中选择Topics.Topic\u Id 主题描述在(''+@主题+'')…等


在这种情况下,我如何使用其他链接中建议的动态sp使用任何拆分函数:

您必须在@Topics中创建一个格式为
one'、'two'、'three
的字符串作为值

编辑:-
然后您需要使用
EXEC sp_executesql
来执行sql语句。spender为您的问题提供的链接正确解释了答案。

您确定吗?OP没有明确说明查询的组装位置。@spender-我自己没有尝试过。但由于它是一个字符串替换,我想这会起作用。因为OP已经添加了第一个“和最后一个”。在这两者之间,我们需要用给定格式的字符串填充它。这种方法容易受到SQL注入的攻击。拆分函数更安全。@Martin-Aah。。对我认为你是对的。我没有考虑SQL注入。我正在创建一个字符串,格式为“1”,“2”,“3”作为值,但它仍然不工作。上面的URL使我找到了URL,解决了我的问题