Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用CASE函数_Sql_Oracle - Fatal编程技术网

Sql 使用CASE函数

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

我正在使用Oracle,并尝试为以下场景构建一些sql:

在EMPLOYEES表中,如果员工的ADDRESS3不等于“”,则使用ADDRESS2填充此字段,否则使用ADDRESS1填充此字段


但它总是给我一个错误信息,关于缺少右括号。当我评论这一点,虽然它运行良好。有人知道我做错了什么吗?

在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
这似乎是答案:)谢谢