我有一个类似下面的查询,但我得到了以下错误::
SQL错误[907] [42000]:ORA-00907:缺少右括号
代码:
SELECT
typ.ID ID, typ.DETAILS DETAILS
FROM
LMP_ORDER_MW_HOST_SVC_TYP typ
LEFT JOIN
LMP_ORDER_MW_HOST_TRX lomht ON typ.ID = lomht.ORDER_SVC_TYP_ID
WHERE
typ.ID IN (CASE
WHEN lomht.ORDER_TRX_ID = :ORDER_TRX_ID
THEN ('31', '21', '51', '45', '35')
ELSE ('12', '13')
END);
字符串
2条答案
按热度按时间bqucvtff1#
CASE
表达式实际上是用来生成新值的。相反,您应该在WHERE
子句中使用直接的and/or逻辑:字符串
cwdobuhd2#
在SQL中,
CASE
表达式返回单个标量值(不是比较或值列表)。不使用
CASE
表达式,你可以使用AND
和OR
逻辑运算符和括号来确定优先级,并且你需要确保你检查了NULL
值的等价ELSE
条件测试(因为,对于三进制逻辑,NULL
永远不等于或不等于其他值):字符串