oracle层次化查询(行政区划三级级联)

作者:小涵 | 来源:互联网 | 2018-07-15 10:38

阅读: 1975

现在将上面的行政区划按代码分为三个级别:省(后四位为0)市(后两位为0)县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

前提:

数据库表DM_xzqh样例(部分):

代码如下:

DM MC

230000 黑龙江省

230100 哈尔滨市

230101 市辖区

230102 道里区

232700 大兴安岭

230103 南岗区

230104 道外区

230108 平房区

230109 松北区

230110 香坊区

230111 呼兰区

230112 阿城区

230123 依兰县

238000 农垦分局

230124 方正县

230125 宾县

230126 巴彦县

230127 木兰县

230128 通河县

230129 延寿县

230182 双城市

230183 尚志市

现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

首先,根据上面表拓展出新的一行sjbm,该行用于表示该行政区划所属的上级行政区划。具体代码如下:

代码如下:

select t.dm,t.mc,case

when substr(t.dm,3)='0000' then 1

when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')

when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00')

else 0

end sjbm from dm_xzqh t

结果如下:

序号 DM MC SJBM

1 230000 黑龙江省 1

2 230100 哈尔滨市 230000

3 230101 市辖区 230100

4 230102 道里区 230100

5 232700 大兴安岭 230000

6 230103 南岗区 230100

7 230104 道外区 230100

8 230108 平房区 230100

9 230109 松北区 230100

10 230110 香坊区 230100

11 230111 呼兰区 230100

12 230112 阿城区 230100

13 230123 依兰县 230100

14 238000 农垦分局 230000

15 230124 方正县 230100

16 230125 宾县 230100

17 230126 巴彦县 230100

18 230127 木兰县 230100

19 230128 通河县 230100

20 230129 延寿县 230100

21 230182 双城市 230100

22 230183 尚志市 230100

然后,就可以利用oracle的层次关系将该查询出的数据分级了,具体代码如下:

代码如下:

select level,dm,mc,sjbm from

(select t.dm,t.mc,case

when substr(t.dm,3)='0000' then 1

when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')

when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00') end sjbm from dm_xzqh t)

[where level=2 ]--该条件语句用于查询具体的每一个级别的行政区划

start with sjbm=1

connect by prior dm=sjbm

[order by level];

结果如下:

序号 level DM MC SJBM

1 1 230000 黑龙江省 1 //省 ,level->1

2 2 230100 哈尔滨市 230000//市,level->2

3 3 230101 市辖区 230100//县,level->3

4 3 230102 道里区 230100

5 3 230103 南岗区 230100

6 3 230104 道外区 230100

7 3 230108 平房区 230100

8 3 230109 松北区 230100

9 3 230110 香坊区 230100

10 3 230111 呼兰区 230100

11 3 230112 阿城区 230100

12 3 230123 依兰县 230100

13 3 230124 方正县 230100

14 3 230125 宾县 230100

15 3 230126 巴彦县 230100

16 3 230127 木兰县 230100

17 3 230128 通河县 230100

18 3 230129 延寿县 230100

19 3 230182 双城市 230100

20 3 230183 尚志市 230100

21 3 230184 五常市 230100

22 2 232700 大兴安岭地区 230000

吐了个 "CAO" !

吐个槽吧,看都看了

oracle查询第三行,oracle层次化查询(行政区划三级级联)相关推荐

  1. oracle 获取第三行,Oracle 11g 第三章知识点总结——单行函数

    Oracle 11g 第三章知识点总结--单行函数 知识点预览 单行函数 单行函数 1. SQL 函数 2.两种 SQL 函数 3.单行函数 a) 操作数句对象 b)接受函数返回一个结果 c)只对一行 ...

  2. oracle 当前top sql,Oracle top 查询TOP SQL

    有时Oracle数据库服务器,系统CPU爆高,通过Top命令可以查看到占用CPU最高的进程 我们需要记住前几个TOP的pid号,带入下面的SQL,到数据库中查询运行的进程.服务器.用户.SQL.等待等 ...

  3. 查询oracle模式对象信息,ORACLE 模式和模式对象

    模式和模式对象一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用户对应一个模式.模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表.视图.索引.聚集.序列 ...

  4. python使用pandas基于时间条件查询多个oracle数据表

    python使用pandas基于时间条件查询多个oracle数据表 目录 python使用pandas基于时间条件查询多个orcale数据表 #orcale数据连接

  5. oracle存储过程 多条件,Oracle多条件查询实际分页存储过程实操

    以下的文章主要是介绍Oracle多条件查询分页存储过程,以下就是Oracle多条件查询分页存储过程具体方案的描述,希望在你今后的学习中会有所帮助.将业务逻辑放到Oracle中使得后台代码很精简,Ora ...

  6. oracle 10g 连接语句,Oracle 10g数据库基础之基本查询语句-下-连接子查询

    实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我们要从多张表中要得到信息,就得以一定的条件将表连接在一 实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我 ...

  7. oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析

    oracle查看执行最慢与查询次数最多的sql语句 注:本文来源 于<oracle查看执行最慢与查询次数最多的sql语句> 前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率 ...

  8. oracle每小时分组查询,Oracle 天内按小时分组查询有关问题

    Oracle 天内按小时分组查询问题 本帖最后由 hao123yao 于 2013-03-08 11:30:56 编辑 表名c_data_01.表结构: uuid   c_id      c_time ...

  9. 查询 oracle_关于oracle和mysql数据库的查询问题

    近期在写mysql数据库报表时,需要给查询排序后的数据增加一列序号,用来统计查询数据的排名,在这里遇到一个视图和排序冲突的问题. Part 1 在oracle数据库中可以直接给查询语句增加一列ROWN ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:卷积神经网络
  2. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...
  3. Android-应用性能测试
  4. python文件中环境声明_Python环境构建
  5. Go如何按行读取文本
  6. LQ训练营(C++)学习笔记_广度优先搜索
  7. 多方位助您快速精准查阅文献和发文章的利器——X-MOL
  8. Last non-zero Digit in N! HDU - 1066
  9. 100篇架构文章打包,及offer面试题下载
  10. html5自动旋转图片,HTML5画布旋转图片
  11. 项目使用ts辅助_我如何建立辅助项目并在第一周获得31,000名用户
  12. python函数式编程思想_python函数式编程
  13. 计算机科学与技术导论%1计算机网络,汕头大学计算机专业课程计划
  14. TIOBE 3 月编程语言排行榜:主流 Java、C++ 惨遭嫌弃,Python 势头迅猛
  15. 日志文件的格式和内容,日志文件的作用,登记日志文件的规则
  16. C盘 html后缀 删,磁盘清理c盘的后果是什么?
  17. 三星s5开发者选项不能连电脑问题
  18. passenger多ruby版本共存部署
  19. jq如何改变html页面,jq同一页面内容切换
  20. C++技术——构造法

热门文章

  1. gdb 笔记(02)— gdb 调试执行(启动调试、添加参数、附加到进程、调试 core 文件)
  2. omnipeek安装包亲测可用
  3. 十个python热门项目,你知道几个
  4. 火焰识别python_一种基于人工智能的火焰图像识别方法与流程
  5. oracle rac节点重启,oracle RAC一个节点频繁重启解决
  6. 2021山丹一中高考成绩查询,2019年张掖中考分数线,张掖中考录取分数线(出炉)
  7. 电脑的文件怎么备份至D盘?有一键备份的方式吗?
  8. 我是如何拿到小米、京东、字节等大厂前端offer的
  9. Android Q app内存压缩优化方案介绍
  10. 用c 语言求纸对折的次数,纸张对折新纪录:13次