查看: 6497|回复: 36

[PL/SQL] sql居然可以这样写?

[复制链接]
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
跳转到指定楼层
1#
发表于 2012-8-29 15:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 isumsen 于 2012-8-29 16:44 编辑

我前几天发了一个帖子:
http://www.itpub.net/thread-1711493-1-1.html
求大侠:怎么写过程让条件下列为空不显示求大侠:怎么写过程让条件下列为空不显示具体是要实现select的时候如果一列值全部null,那么不显示(不select这个字段),否则的话显示。各位大侠都提了意见,还有写了过程的。
还有提写两个select的,问题是我业务的需要不能写两个select。

我把我的明确要求写出来:
查询公司表bd_corp三个字段unitcode,unitname,sealeddate(封存日期)
首先查询公司编码开头是‘01’的
select unitcode,unitname,sealeddate from bd_corp where unitcode like '01%' ,会发现sealeddate一列有的行是有值的,

接着查询公司编码开头是‘02’的
select unitcode,unitname,sealeddate from bd_corp where unitcode like '02%' ,会发现sealeddate一列全部是空,这时候业务的要求就想sealeddate不显示。

现在的情况是怎么能够写一个sql实现sealeddate如果一列全部是null的时候sealeddate不显示出来,否则显示出来?

刚刚和一个人聊天,他用的sqlserver,他的业务是:“
如果员工表内,婚姻状况F_Marriage字段非空的记录数为0。那么查询‘hello’和当前时间,否则只显示当前时间。

sql是:
if (
select COUNT(1) from AR_P_PersonBase where F_Marriage is not null ) = 0
select 'Hello',GETDATE()
else
select GETDATE()
截图:

我还是第一次看到sql可以直接这样写的,sql里面嵌套if,oracle可以吗?


论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
2#
 楼主| 发表于 2012-8-29 15:54 | 只看该作者
貌似oracle不支持这样的写法

使用道具 举报

回复
论坛徽章:
8
奥运会纪念徽章:拳击
日期:2012-07-03 14:15:312009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:08:28ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:50:44蜘蛛蛋
日期:2012-02-08 17:06:10ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:20咸鸭蛋
日期:2013-06-17 10:31:44
3#
发表于 2012-8-29 15:54 | 只看该作者
只有不知道,木有做不到。

1.JPG (13.69 KB, 下载次数: 28)

1.JPG

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2005-10-30 17:05:33秀才
日期:2016-03-24 09:10:24秀才
日期:2016-02-18 09:11:33秀才
日期:2016-01-25 14:55:312013年新春福章
日期:2013-02-25 14:51:24ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB元老
日期:2010-11-16 08:41:11ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51秀才
日期:2016-03-24 09:20:52
4#
发表于 2012-8-29 16:04 | 只看该作者
貌似没啥意思! 可读性不强!

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
5#
 楼主| 发表于 2012-8-29 16:11 | 只看该作者
wxhoracle 发表于 2012-8-29 16:04
貌似没啥意思! 可读性不强!

我还不知道3F的写法能否达到我的需求

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
6#
发表于 2012-8-29 16:12 | 只看该作者
你直接PLSQL 不更好吗

使用道具 举报

回复
论坛徽章:
0
7#
发表于 2012-8-29 16:13 | 只看该作者
case,decode都行吧

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
8#
 楼主| 发表于 2012-8-29 16:17 | 只看该作者
denghuanzhang 发表于 2012-8-29 16:13
case,decode都行吧

decode?

使用道具 举报

回复
论坛徽章:
289
蛋疼蛋
日期:2013-03-29 13:46:58优秀写手
日期:2013-12-24 06:00:12福特
日期:2014-02-17 17:30:59生肖徽章:兔
日期:2012-05-24 19:03:36SQL极客
日期:2013-12-09 14:13:35ITPUB季度 技术新星
日期:2014-02-24 11:00:06IT宝贝
日期:2014-08-27 10:32:17马上加薪
日期:2014-08-05 09:18:33SQL数据库编程大师
日期:2016-01-13 10:30:43玉石琵琶
日期:2014-03-04 16:46:07
9#
发表于 2012-8-29 16:17 | 只看该作者
只能写2个SQL在PL/SQL里面判断,一个SQL搞不出来的
SQLSERVER这种功能貌似很牛B啊

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24茶鸡蛋
日期:2013-03-15 09:00:46优秀写手
日期:2014-11-28 06:00:15
10#
 楼主| 发表于 2012-8-29 16:25 | 只看该作者
demonat 发表于 2012-8-29 16:17
只能写2个SQL在PL/SQL里面判断,一个SQL搞不出来的
SQLSERVER这种功能貌似很牛B啊

在pl/sql?你的意思写过程吗?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表