使用 if 时缺少右括号
Posted
技术标签:
【中文标题】使用 if 时缺少右括号【英文标题】:missing right parenthesis when using if 【发布时间】:2020-07-28 08:36:59 【问题描述】:我正在尝试在 sql developer (Oracle) 中使用简单的 IF 查询,但出现“缺少右括号”错误。我想从我的表TEST_TABLE
中写下所有ID
,如果ID
是1234,则写yes,否则写'no'。我做错了什么?
select id, if(id = 1234, 'yes', 'no') from TEST_TABLE t
【问题讨论】:
【参考方案1】:那里不能使用 IF(IF 用于 PLSQL 代码中的控制流,而不是查询),请改用 CASE WHEN:
select id, CASE WHEN id = 1234 THEN 'yes' ELSE 'no' END as idIs1234 from TEST_TABLE t
case when 的基本形式是:
CASE
WHEN test THEN truevalue
[WHEN othertest THEN othertruevalue]
[ELSE falsevalue ]
END
CASE 必须执行一个或多个测试,每个测试都返回一个值。如果没有大小写匹配(所有测试都是假的)并且没有 ELSE 子句,则返回 null。
还有一种形式可以测试单个变量与各种值是否相等:
CASE id WHEN 1234 THEN 'yes1' WHEN 2345 THEN 'yes2' ELSE 'no' END
【讨论】:
谢谢,它有效。我什么时候可以使用 IF,它与 CASE WHEN 有什么区别? 简单来说“你只能在存储过程中使用IF,来选择执行哪组代码语句”以上是关于使用 if 时缺少右括号的主要内容,如果未能解决你的问题,请参考以下文章
执行 Oracle Ad Hoc 查询时绑定参数出错; ORA-00907: 缺少右括号
SQL 错误:ORA-00907:缺少右括号 00907。00000 -“缺少右括号”