oracle 查询条件中判断两个字段相等时 一个字段为空则跳过
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 查询条件中判断两个字段相等时 一个字段为空则跳过相关的知识,希望对你有一定的参考价值。
where 语句后面是 t.dataTime=t2.dataTime 如何进行这样的判断:
当t.dataTime或者 t2.dataTime 为空时 则跳过相等判断,如果两个量都有值则进行判断
在线等....急......
--我帮你改下 执行时 先判断全面的条件 就过滤掉了空值 还有‘’ 和null 是不一样的 所以都要过滤
--希望解决了楼主的问题
where t<>'' and t is not nul and t2<>'' and t2 is not null
and t.dataTime=t2.dataTime追问
(关联条件 or (t.dataTime is null or t2.dataTime is null)) 问题这样解决了,不过还是谢谢了
追答你这样写 括号有什么意义呢? 有没有想过?
如果你这样是解决了问题 那么你描述就有问题
果然还是不行哇....问题是你上面那个写法把空值过滤掉了...我联立查询空值也要查出来...
追答我有点搞不清楚楼主的需求了 你能重新描述一下吗?
或者把结果截图给我看也可以
时间都有的时候
存在时间没有的时候
--那就不要那样写 用left join 我不知道你哪个表是主表 如果主表不是t 就换个顺序 你这样就不是---过滤空值了 不明白再问我
select 1 from t left join t2 on
t.dataTime=t2.dataTime
nvl(t.dataTime, sysdate)=nvl(t2.dataTime,sysdate) 这样子的话....如果我t.dataTime 不为空,但是t2.dataTime为空,则t和t2数据匹配就完全不对了啊
追答不太明白你说的,空值本来就应该和具体的值匹配不上啊
追问(关联条件 or (t.dataTime is null or t2.dataTime is null)) 问题这样解决了,不过还是谢谢了
追答楼主要的是全外连接吧,full out jion
参考技术B 你可以where后面限定t.dataTime, t2.dataTime 不为空啊oracle 数据库code 拼接字段如何转换成文字
参考技术A 有多种解决办法。一、使用“||”连接。二、使用CONCAT()函数连接。
在使用这个函数时,当拼接的值不是字符串时,oracle会自动转换成字符串。需要注意的时,此函数里面只支持两个参数,不支持超过两个的参数,否则会报:参数个数无效。当需要多个参数进行拼接时,可以使用多个concat()函数进行嵌套。
注意:mysql中不能使用||来连接字符串,只能用concat来连接。
以上是关于oracle 查询条件中判断两个字段相等时 一个字段为空则跳过的主要内容,如果未能解决你的问题,请参考以下文章