根据存储过程中的参数包含Where子句

时间:2011-10-14 12:35:54

标签: sql-server tsql stored-procedures

我有一个名为@Codes的参数传入一个可选的逗号分隔的系统代码字符串。

如果此参数有值,我想用

过滤查询
WHERE 
  blah = blah AND
  Code IN ('Code1','Code2','etc.')

如果参数为null或为空,我想省略完全过滤器的最后一个。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

WHERE 
  blah = blah AND
  (
  Code IN (SELECT TheItem FROM dbo.fnSplit(@Codes))
  OR
  @Codes IS NULL
  )

要将CSV更改为记录集,请免费选择one of the many functions。就个人而言,我倾向于numbers table approach