繁体   English   中英

Oracle SQL:此DECODE语句的意义是什么?

[英]Oracle SQL: What is the point of this DECODE statement?

我正在维护其他人编写的一些Oracle sql语句,并且到处都在许多语句和pl / sql块中重复看到相同的模式:

select DECODE(NVL(t1.some_column,'~'),'~',t2.some_column,t1.some_column) some_column from t1, t2 where ...

现在,这与这个简单得多的陈述不完全相同吗?

select NVL(t1.some_column,t2.some_column) from t1, t2 where...

我不确定为什么将解码和nvl链接在原始查询中。 单独执行nvl似乎是效率较低的方法。 谁可以给我解释一下这个?

感谢您的见解!

哇,嗯,那里的编码看起来很差。

NVL(t1.some_column, t2.some_column)

...给出相同的结果。

不过,我对COALESCE较为满意:

COALESCE(t1.some_column, t2.some_column)

这样,如果您想增加三分之一,那就只是:

COALESCE(t1.some_column, t2.some_column, t3.some_column)

似乎谁编写原始代码的人都希望它是可扩展的,只是不了解COALESCE ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM