玩转C科技.NET

从学会做人开始认识这个世界!

导航

<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

公告

Subscribe to this feed
Contact volnet online!

MSN群MyMSDN技术讨论群
群号:www.msdn@hotmail.com
Windows Live Alerts
LiveMessenger:
<My Library>

与我联系

搜索

 

常用链接

留言簿(6)

我参与的团队

我的标签

随笔分类(127)

随笔档案(114)

文章分类(15)

文章档案(15)

相册

家园建设

最新随笔

积分与排名

  • 积分 - 176632
  • 排名 - 213

最新评论

阅读排行榜

评论排行榜

60天内阅读排行

2007年11月17日 #

【代码保留】Oracle树形查询

功能:

查找当前层级(部门)所属的某一上级的所有子集。常用于查询权限等(人可能属于××子部门,但是却需要查询该同志是否在××子部门的上级部门有职务(总不能说人家是××子部门的就不是××公司的吧~))

原理:

                                    1                                       (1级)

                           21                 22                          (2级)

                    31     32             33    34                     (3级)

                41,42   43,44      45,46   47,48                (4级)

当前层级可能为层级图中的其中一级,假设为3级的33,那么结果集可能需要查找其所隶属的二级以下的所有子集,此例中,33的商机为22,22的所有下级包括22、33、34、45、46、47、48。

思路:

树形查询语句可以实现向上以及向下的查询(常用来查询树中节点的子节点以及父节点),因此,先向上查询到级别N,然后在从N开始向下查询其子集即可。

SQL:

select t.brc_id
          from asm_branch t
        CONNECT BY t.brc_parentid = PRIOR t.brc_id
         START WITH t.brc_id in (select t.brc_id
                                   from asm_branch t
                                  where t.brc_level = '1'
                                 CONNECT BY t.brc_id = PRIOR t.brc_parentid
                                  START WITH t.brc_id = '53')

53可替换为任意要查询级别以下(包括同级)的编号,1则代表要查询第一级

posted @ 2007-11-17 04:00 volnet(可以叫我大V) 阅读(274) | 评论 (0)编辑

【代码保留】Oracle删除字符串空格

功能:

删除字符串中隐含空格

思路:

将字符串中的所有空格' '替换为''(将中间有空格的替换为中间无空格的字串)。

SQL:

select replace(a.tar_regid,' ','') tar_regid from red_taskregister a where  a.tar_id = 226

实例:

tar_id = 226的项我为之添加了空格。

select a.tar_regid from red_taskregister a where  a.tar_id = 226

select replace(a.tar_regid,' ','') tar_regid from red_taskregister a where  a.tar_id = 226

第一句将不去除空格,第二句则删除空格。为了看到效果,我分别在其左右并上框。

select '['||a.tar_regid||']' from red_taskregister a where  a.tar_id = 226

select '['||replace(a.tar_regid,' ','')||']' tar_regid from red_taskregister a where  a.tar_id = 226

于是结果分别为:

[      ]

[]

posted @ 2007-11-17 03:09 volnet(可以叫我大V) 阅读(533) | 评论 (0)编辑

【代码保留】Oracle时间比较(与当前时间)

功能:

提供查询对记录中最大值与当前时间的比较。可实现一个指定范围与当前时间的比较。

实现思路:

通过对记录中最大的时间加上指定月份得到范围上限,并用CURRENT_DATE获取当前系统时间与之比较,如果超出该上限则判断为不存在,表示为0,否则表示为1。

SQL:

SELECT COUNT(*) contains
  FROM DUAL t
WHERE  CURRENT_DATE < (SELECT (ADD_MONTHS(MAX(t.med_time), 12))
                         FROM red_meettingrecord t
                        WHERE t.med_tar_id = '225'
                          AND t.med_usr_id = '000277')

posted @ 2007-11-17 01:45 volnet(可以叫我大V) 阅读(1287) | 评论 (0)编辑

使用Live Messenger联系我
关闭