【求助】ORACLE 判断两列NULL情况最效率的方法

shcqupc 2016-02-24 09:56:47
表有巨量数据
create table t1(c1 varchar2(100), c2 varchar2(100));

需求:
输出一个结果列
若c1和c2中有一个不为空,输出1
否则输出0

select case when (c1 is null) and (c2 is null) then 0
else 1 end as val from t1;
这种方法应该不是最效率的...

这里是不是要用位运算?
...全文
498 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobluesky 2016-02-25
  • 打赏
  • 举报
回复
其实感觉你的是最优的,看起来复杂,但只判断,什么运算都不需要做,很快,其他的反而要计算。。
shcqupc 2016-02-24
  • 打赏
  • 举报
回复
nvl2(coalesce(c1,c2,c3,c4....),1,0) GET
z123zjf 2016-02-24
  • 打赏
  • 举报
回复
去科普了下位运算。。。表示看不懂。。。 sql这样改下,效率啥的不懂。如果列多,写法简单一点 nvl2(coalesce(c1,c2,c3,c4....),1,0)
小灰狼W 2016-02-24
  • 打赏
  • 举报
回复
不用纠结这个,这个结果列对效率影响可以忽略不计
非典型宅男c 2016-02-24
  • 打赏
  • 举报
回复
用 decode 呢?
卖水果的net 2016-02-24
  • 打赏
  • 举报
回复
-- 凑个人数

select sign(nvl2(c1,1,0) + nvl2(c2,1,0)) from mytable

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧