​ 今天做项目的查询统计时,oracle数据库中有数据,但是带条件后一直查询不出来,最后发现了条件关联查询时,有NULL数据的比较,所以记录一下。

Oracle判断两个数据是否相等

1、表数据

student表:

oracle_address

middle表:

oracle_address

2、判断两个都不可能为空数据

直接使用 “=”:

1
select * from student s,middle sc where s.sid=sc.sid

结果如下:

oracle_address

3、判断两个可能为空的数据

继续使用“=”,发现为NULL数据不能判断相等

1
2
select * from student s,middle sc where s.sid=sc.sid
and s.email=sc.email

结果如下:

oracle_address

使用 NVL 函数:

1
2
select * from student,sc where student.sid=sc.sid
and NVL(student.email,0) = NVL(sc.email,0)

结果如下:

oracle_address

4、NVL函数

NVL函数的格式如下:NVL(expr1,expr2)

含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

1
select sname, NVL(email, '123456@qq.com') from student

结果如下:

oracle_address

注意:

NVL(expr1,expr2),expr1为变量,expr2为当expr1为空时,设置的默认值(一般为0);

其中:NVL(expr1, 0)和NVL(expr1, ‘0’)的效果一样,最终expr1为空时值结果都为字符串‘0’

最后更新: 2020年03月24日 11:52

原始链接: http://ligangit.com/2020/03/24/Oracle判断值相等/

× 请我吃糖~
打赏二维码