社区
基础和管理
帖子详情
求助!!Oracle里如何判断NULL?
wxylvmnn
2012-09-13 03:21:33
如果用到where语句里是
where 字段A is null这样的形式,
这样是OK的。
但,写在存储过程的 判断语句里时,该如何写呢?
代码里有 if 字段A = 字段B then 的逻辑,
但当字段A或者B都是NULL的时候,这个判断就失效了。
...全文
1965
14
打赏
收藏
求助!!Oracle里如何判断NULL?
如果用到where语句里是 where 字段A is null这样的形式, 这样是OK的。 但,写在存储过程的 判断语句里时,该如何写呢? 代码里有 if 字段A = 字段B then 的逻辑, 但当字段A或者B都是NULL的时候,这个判断就失效了。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jsshizhanab
2014-01-05
打赏
举报
回复
NULL是不存在 两个NULL比较应该也是FALSE吧
wxylvmnn
2012-09-18
打赏
举报
回复
谢谢大家热心回帖哈。
找到了一个function能够实现等于和不等于的判断,跟大家共有下。
FUNCTION ISEQUAL
(
VAR1 IN VARCHAR2,
VAR2 IN VARCHAR2
)
RETURN NUMBER IS
BEGIN
IF (VAR1 IS NULL AND VAR2 IS NULL OR VAR1 IS NOT NULL AND VAR2 IS NOT NULL AND VAR1 = VAR2) THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END ISEQUAL;
jdsnhan
2012-09-14
打赏
举报
回复
你可以nvl(A,'0') = NVL(B,'0'). ''这个也是空
mosquito_lover1
2012-09-14
打赏
举报
回复
NULL不能拿来比较=or<>
陈字文
2012-09-13
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
SQL code
--还有应是变量吧,字段你哪可以if then
if nvl(A,'')=nvl(B,'') then
[/Quote]
++
fw0124
2012-09-13
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
如果是等号判断,这么写应该可以。
但是要是 不等号 的话,应该怎么写呢?
[/Quote]
总之一句话,,除了IS NULL、IS NOT NULL以外,对NULL的任何操作的结果还是NULL。
对于NULL的情况,单独考虑就是了。
fw0124
2012-09-13
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
如果是等号判断,这么写应该可以。
但是要是 不等号 的话,应该怎么写呢?
[/Quote]
总之一句话,,除了IS NULL、IS NOT NULL以外,对NULL的任何操作的结果还是NULL。
对于NULL的情况,单独考虑就是了。
wxylvmnn
2012-09-13
打赏
举报
回复
如果是等号判断,这么写应该可以。
但是要是 不等号 的话,应该怎么写呢?
fw0124
2012-09-13
打赏
举报
回复
[Quote=引用楼主 的回复:]
如果用到where语句里是
where 字段A is null这样的形式,
这样是OK的。
但,写在存储过程的 判断语句里时,该如何写呢?
代码里有 if 字段A = 字段B then 的逻辑,
但当字段A或者B都是NULL的时候,这个判断就失效了。
[/Quote]
是的,oracle就是这样处理null的。
请参考http://blog.csdn.net/fw0124/article/details/6210730
如果需要a,b都是null的时候判断相等,可以这样
a is null and b is null
wxylvmnn
2012-09-13
打赏
举报
回复
写0不行啊,,,0是有数据的意思了。。。
TO:zhangandli
你看这样写,不好用的。
BEGIN
IF NVL(NULL,'') = NVL(NULL,'') THEN
dbms_output.put_line('YES');
ELSE
dbms_output.put_line('NO');
END IF;
END;
Alex20150716
2012-09-13
打赏
举报
回复
用length()函数判断
wxylvmnn
2012-09-13
打赏
举报
回复
试过了,这样写不好用啊。。。
貌似NULL和''的效果是一样的啊。。
iqlife
2012-09-13
打赏
举报
回复
字段A = 字段B 都是NULL会失效么,没有遇到过
这样写就避免了,
nvl(字段A,0) = nvl(字段B,0)
人生无悔
2012-09-13
打赏
举报
回复
--还有应是变量吧,字段你哪可以if then
if nvl(A,'')=nvl(B,'') then
oracle
11g rac bug处理
6. **
求助
于
Oracle
支持**:在处理这种复杂问题时,及时联系
Oracle
官方技术支持是非常必要的,他们可以提供更专业的指导和帮助。 总之,处理
Oracle
11g RAC的bug问题需要对RAC架构有深入理解,并且经常需要结合...
oracle
10g 错误代码
- **ORA-600**:这是一个内部错误,表示数据库遇到了无法处理的异常情况,通常需要查看
Oracle
支持文档或
求助
于专业DBA来解决。 - **ORA-7445**:表示操作系统级别的错误,可能涉及
Oracle
进程的崩溃或资源限制。 -...
oracle
表的简单操作步骤
Oracle
数据库是世界上最流行的数据库管理系统之一,广泛用于企业级的数据存储和管理。...在实际工作中,如果有任何问题,不要犹豫向他人
求助
或查找相关文档,持续学习和探索将有助于提升你的
Oracle
技能。
二十三种设计模式【PDF版】
有经验的面向对象设计者的确能做出良好的设计,而新手则面对众多选择无从下手,总是
求助
于以前使用过的非面向对象 技术。新手需要花费较长时间领会良好的面向对象设计是怎么回事。有经验的设计者显然知道一些新手所...
vc下通过ado访问数据库
ADO提供了一种高效、方便的方式来与各种数据库进行交互,包括但不限于SQL Server、
Oracle
、MySQL等。下面,我们将深入探讨如何在VC++中通过ADO进行数据库操作,以及可能遇到的问题。 1. **ADO基础** ADO是...
基础和管理
17,382
社区成员
95,118
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章