我希望在where子句中有一个简单的条件,在其中一个列上:
当@PostTypeid is null
然后 应为PostTypeid in (4,5)
时,如果
@PostTypeid is not null
然后where子句应为PostTypeId = @PostTypeId
我正在尝试将 case 用于此目的,但我认为我对语法感到困惑。这是我到目前为止所提出的:
(PostTypeid = case(@PostTypeId) when null then in (4,18) else @PostTypeId end)
错误是当我在中使用时,我不认为这是一个有效的语法。这样做的正确方法是什么?谢谢。我试着将括号转移到其他几个地方,但徒劳无功。
由于
答案 0 :(得分:8)
类似的东西:
WHERE
(@PostTypeID IS NULL AND PostTypeId IN (4, 5)) OR
(@PostTypeId IS NOT NULL AND PostTypeID = @PostTypeID)
也许?
答案 1 :(得分:-2)
你不能在一个陈述中使用=和运算符
编辑:
(PostTypeid = case(@PostTypeId)为null,然后 (4,18),否则@PostTypeId结束)
如果@PostTypeId为null,则它将如下所示。
(PostTypeid = in (4,8))
这是语法错误。
case(@PostTypeID) when IS NULL then PostyTypeId in (4,18) else PostTypeId = PostTypeId
这种情况应该返回单个结果。