如何让这个Case语句在Oracle vs SQL Server中工作

时间:2016-02-16 19:38:44

标签: sql sql-server oracle

“失败”字段在SQL Server中填充“失败”和“非失败”。 Oracle仅填充“失败”

Select
    A.order_no, FS.order_no
    ,case when FS.order_no is Null then 'Non-Fail' else 'Fail' end as Failure
From 
    dbo.orders A
    left join dbo.failures FS
    on A.order_no = FS.order_no

2 个答案:

答案 0 :(得分:1)

该声明在Oracle中的工作方式相同,无需任何修改。

结果的差异很可能是由于您用于测试数据的差异所致。

答案 1 :(得分:0)

您可以使用NVL2函数,该函数用于比较空值的条件语句。 NVL2(exp1,exp2,exp3):如果exp1不为null,则返回exp2,否则返回exp3。 试试这个:

Select A.order_no, FS.order_no, NVL2(FS.order_no,'Fail','non-Fail') as Failure From dbo.orders A left join dbo.failures FS on A.order_no = FS.order_no