Oracle SQL中CASE表达式报错:缺失表达式或缺失关键字求助
解决Oracle SQL中CASE表达式的语法错误
我来帮你排查这个问题!你的报错根源其实在列别名的引号使用上——在Oracle SQL里,单引号是用来包裹字符串常量的,绝对不能用它来定义列别名。当你写AS 'PROBLEMS'时,Oracle会把'PROBLEMS'当成一个普通字符串值,而非列的别名,这直接打乱了SELECT语句的语法结构,所以才会抛出“缺失表达式”或“缺失关键字”这类模糊的语法错误。
修正后的两种可行写法:
- 直接省略引号(推荐,只要别名不是Oracle关键字或包含特殊字符):
SELECT CASE WHEN A.PARENT_ID IS NULL THEN 'NOPROB' ELSE 'PROB' END AS PROBLEMS FROM A
- 使用双引号包裹别名(如果别名需要保留大小写或包含空格、特殊字符时用):
SELECT CASE WHEN A.PARENT_ID IS NULL THEN 'NOPROB' ELSE 'PROB' END AS "PROBLEMS" FROM A
换成上面的写法后,你的语句应该就能正常执行了。
内容的提问来源于stack exchange,提问作者Lay
相关产品推荐
相关产品推荐

