Sql 使用CASE函数
我正在使用Oracle,并尝试为以下场景构建一些sql: 在EMPLOYEES表中,如果员工的ADDRESS3不等于“”,则使用ADDRESS2填充此字段,否则使用ADDRESS1填充此字段Sql 使用CASE函数,sql,oracle,Sql,Oracle,我正在使用Oracle,并尝试为以下场景构建一些sql: 在EMPLOYEES表中,如果员工的ADDRESS3不等于“”,则使用ADDRESS2填充此字段,否则使用ADDRESS1填充此字段 但它总是给我一个错误信息,关于缺少右括号。当我评论这一点,虽然它运行良好。有人知道我做错了什么吗?在case表达式的末尾需要END关键字: CASE t2.ADDRESS3 != ' ' THEN t2.ADDRESS2 ELSE t2.ADDRESS1 END CASE t2.ADDRESS3
但它总是给我一个错误信息,关于缺少右括号。当我评论这一点,虽然它运行良好。有人知道我做错了什么吗?在case表达式的末尾需要
END
关键字:
CASE t2.ADDRESS3 != ' ' THEN t2.ADDRESS2 ELSE t2.ADDRESS1 END
CASE t2.ADDRESS3
WHEN ' ' THEN t2.ADDRESS1
ELSE t2.ADDRESS2
END
CASE有两个变体-都需要WHEN子句 一个变量可以在每个WHEN子句中包含完整和复杂的布尔表达式:
CASE
WHEN t2.ADDRESS3 != ' ' THEN t2.ADDRESS2
ELSE t2.ADDRESS1
END
在另一个变体中,每个WHEN子句包含要针对CASE表达式进行测试的值:
CASE t2.ADDRESS3 != ' ' THEN t2.ADDRESS2 ELSE t2.ADDRESS1 END
CASE t2.ADDRESS3
WHEN ' ' THEN t2.ADDRESS1
ELSE t2.ADDRESS2
END
最后一个不行因此,“反向”逻辑;-) 然后检查右括号是否放错。
WHEN
也丢失了。这似乎缺少WHEN语句<代码>t2.ADDRESS3!=''时的情况然后t2.ADDRESS2 ELSE t2.ADDRESS1结束或案例t2.ADDRESS3当!=''时然后t2.address 2 ELSE t2.address 1 END
这似乎是答案:)谢谢