如何使用CASE在SQL中编写'WHERE IN'语句

时间:2013-11-27 18:17:29

标签: sql case where

我在SQL存储过程中有一个WHERE子句并传入一个整数值。我想要实现的是,当传入数字0时,查询将采用1-10的数字列表并使用这些值。这是我的代码。

AND [COLUMN_NAME] in ( CASE WHEN @PARAMETER <> 0 THEN @PARAMETER
        ELSE (SELECT [EVENT_ID] FROM [TABLE_NAME]) END )

以下行返回 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

SELECT [EVENT_ID] FROM [TABLE_NAME]

然而,我没有看到任何结果。非常感谢任何帮助。

d

1 个答案:

答案 0 :(得分:3)

WHERE
  (@Parameter != 0 and [Column_Name] = @Parameter)
  OR
  (@Parameter = 0 and [Column_Name] in (SELECT [EVENT_ID] FROM [TABLE_NAME])