社区
基础和管理
帖子详情
sql检索文中子段相等判断问题,急盼解决!!!
ufo_ufo
2006-12-14 01:32:47
pl/sql中用到,
传进参数比如i_str可以为空
select * from a 表 where a.t1 = nvl2(i_str, a.t1, i_str)
想实现为空的时候不加这个字段条件,可是为空的时候为什么检索不到数据??
很奇怪!!!
...全文
192
9
打赏
收藏
sql检索文中子段相等判断问题,急盼解决!!!
pl/sql中用到, 传进参数比如i_str可以为空 select * from a 表 where a.t1 = nvl2(i_str, a.t1, i_str) 想实现为空的时候不加这个字段条件,可是为空的时候为什么检索不到数据?? 很奇怪!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
adaizi1980
2006-12-14
打赏
举报
回复
按bzszp(SongZip)的方法做,
对于表达式a.t1 = nvl(i_str, a.t1),当i_str不为空时,该表达式等价于a.t1 = i_str;当i_str为空时,该表达式等价于a.t1 = a.t1 ,即a.t1 不为空时该表达式永远为真,等同于可以省略该条件;
需要注意的是,如果a.t1 可能为空,请用nvl(a.t1,'字段不可能是的一个特殊值') = nvl(i_str, nvl(a.t1,'字段不可能是的一个特殊值')),否则,由于oracle不能对两个空值做比较,当i_str为空时,a.t1为空的行会被过滤掉
ufo_ufo
2006-12-14
打赏
举报
回复
我搞错啦,两边长度不一样,给分!!
bzszp
2006-12-14
打赏
举报
回复
哪里有问题?
SQL> select deptno from dept;
DEPTNO
----------
10
20
30
40
SQL> select deptno from dept where deptno = nvl(null,deptno);
DEPTNO
----------
10
20
30
40
SQL> select deptno from dept where deptno = nvl('',deptno);
DEPTNO
----------
10
20
30
40
SQL> select deptno from dept where deptno = nvl('20',deptno);
DEPTNO
----------
20
SQL>
tgm78
2006-12-14
打赏
举报
回复
select * from a 表 where a.t1 = nvl(i_str, a.t1)
当i_str不为空的时候,取的自然是i_str值
bzszp
2006-12-14
打赏
举报
回复
nvl就是个这个功能
ufo_ufo
2006-12-14
打赏
举报
回复
select * from a 表 where a.t1 = nvl(i_str, a.t1)
空值时候可以检索到数据,不为空检索不到的。
???
yuyu1980
2006-12-14
打赏
举报
回复
up
ufo_ufo
2006-12-14
打赏
举报
回复
但是不为空的话我还要这个字段=i_str的值
bzszp
2006-12-14
打赏
举报
回复
select * from a 表 where a.t1 = nvl(i_str, a.t1)
基于
SQL
语法解释器J
Sql
Parser实现的
SQL
解析工具
NULL 博文链接:https://lxy19791111.iteye.com/blog/1543223
2021版高考语文一轮复习专题作业13文言文阅读3含解析新人教版
2021版高考语文一轮复习专题作业13文言文阅读3含解析新人教版
鄂教版八上语文第24课《故事三则》同步练习精选.doc
鄂教版八上语文第24课《故事三则》同步练习精选.doc
中华传统文化常识集锦.doc
中华传统文化常识集锦.doc
基础和管理
17,382
社区成员
95,118
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章