【发布时间】:2018-06-05 13:18:13
【问题描述】:
假设这个查询运行良好:
SELECT
first_name,
consultant_id,
CASE consultant_id
WHEN 1 THEN 'First Consultant'
WHEN 2 THEN 'Second Consultant'
END
FROM consultant
ORDER BY first_name;
为什么我不能使用一些布尔逻辑添加另一个 WHEN 子句,而不是上面两个 WHEN 子句中隐含的等于?例如:
SELECT
first_name,
consultant_id,
CASE consultant_id
WHEN 1 THEN 'First Consultant'
WHEN 2 THEN 'Second Consultant'
WHEN BETWEEN 3 AND 12 THEN 'Everyone else'
END
FROM consultant
ORDER BY first_name;
抛出此错误:
ORA-00936: missing expression
00936. 00000 - "missing expression"
*Cause:
*Action:
Error at Line: 7 Column: 10
有没有办法在不使用更详细的情况下完成这项工作:
SELECT
first_name,
consultant_id,
CASE
WHEN consultant_id = 1 THEN 'First Consultant'
WHEN consultant_id = 2 THEN 'Second Consultant'
WHEN consultant_id BETWEEN 3 AND 12 THEN 'Everyone else'
END
FROM consultant
ORDER BY first_name;
【问题讨论】:
-
你现在的答案。 “更详细”的方法是您需要使用的。
-
那么WHEN子句只能处理隐含的'等于'逻辑?
-
@ConnerM.:正确,如果您需要其他任何内容,则不能使用“短版”
-
为什么投反对票?
标签: sql oracle case-when booleanquery