[英]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.