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

参考技术A 使用nvl函数进行空值转换,如:nvl(t.dataTime, sysdate)=nvl(t2.dataTime,sysdate),要不就写个子查询把空值过滤掉追问

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 查询条件中判断两个字段相等时 一个字段为空则跳过的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 判断表字段里字符串是不是含有汉字

sql语句中如何一个字段对查询出的多个值添加判断条件

oracle 关于条件判断

oracle SQL查询中,如何在where中用条件语句,判断不同情况,追加不同的And条件?

Oracle_SQL 连接和子查询

mysql 中用sql判断两个字段长度是不是相等