ORACLE SUBSTR函数和INSTR函数的结合

编写脚本时,经常会用到SUBSTR函数和INSTR函数结合使用,往往会出现"意想不到"的效果,这里不再介绍SUBSTR函数和INSTR函数的用法,主要讲下个人在实际开发中的案例供大家参考.
前景:
现有按照树形结构存储在ORACLE数据库中的一组组织结构数据,例如:
一级部门-二级部门-三级部门
需求:
需截取数据,例如:二级部门-三级部门
技术引用:
Oracle函数sys_connect_by_path
语法:
Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行。其语法一般为:
select … sys_connect_by_path(column_name,‘connect_symbol’) from table
start with … connect by … prior
理解:
对于数据库来说,根节点并不一定是在数据库中设计的顶级节点,而是start with开始的地方。sys_connect_by_path函数就是从start with开始的地方开始遍历,并记下其遍历到的节点,start with开始的地方被视为根节点,将遍历到的路径根据函数中的分隔符,组成一个新的字符串。sys_connect_by_path函数用connect by来寻找下一条记录,直到迭代找不到相应记录为止。概念与递归类似,connect by指定递归(连接)条件,如果条件不满足则递归结束。
代码:
截取之前:

SELECT SYS_CONNECT_BY_PATH(T.ORG_NAME, '-') ORG_NAME_FULL_PATHFROM ORG TWHERE 1 = 1AND T.IS_STOP_USED = '1'START WITH T.PARENT_TYPE = '0'CONNECT BY T.PARENT_TYPE = PRIOR T.ORG_ID

结果集:

截取之后:

SELECT SUBSTR(P.ORG_NAME_FULL_PATH,INSTR(P.ORG_NAME_FULL_PATH, '-', 2) + 1) NAMEFROM (SELECT SYS_CONNECT_BY_PATH(T.ORG_NAME, '-') ORG_NAME_FULL_PATHFROM ORG TWHERE 1 = 1AND T.IS_STOP_USED = '1'START WITH T.PARENT_TYPE = '0'CONNECT BY T.PARENT_TYPE = PRIOR T.ORG_ID) P

结果集:

ORACLE SUBSTR函数和INSTR函数的结合相关推荐

  1. oracle取第一位,Oracle中的substr()函数和INSTR()函数

    1)substr函数格式   (俗称:字符截取函数) 格式1: substr(string string,int a,int b); 格式2:substr(string string,int a) ; ...

  2. SQL中CharIndex函数、InStr 函数、PatIndex函数、Stuff函数区别与作用

    在c#中可以用字符串的IndexOf方法来判断一个字符串中是否含有指定的字符.而在SQL SERVER中也就相关的函数来实现IndexOf的功能.CharIndex,InStr,PatIndex三个函 ...

  3. Oracle数据库中的instr函数的用法

    一.instr函数的用法 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符.在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(so ...

  4. 达梦数据charindex_MSSQL SERVER查询使用charindex函数代替instr函数

    很多客户在SQL SERVER开发中,需要判断字符串中是否包含某字符,在asp中常见的是instr(字符串,字符)>0来判断位置,在php中则使用strpos(字符串,字符)>0来判断包含 ...

  5. Oracle截取字符串:instr、substr、length函数的使用

    1.字段中有以下字符串数据: 张三(zhangsan) 2.截取代码 ps:我的数据库表名为"shuizhu_test",该字段名为"username",详细请 ...

  6. oracle调用MySQL函数,Oracle的INSTR函数MySQL实现

    Oracle的INSTR函数MySQL实现 一个迁移项目遇到的,MySQL的instr函数只能查找子串是否在父串中,没法按照出现的次数进行查找.这里我自己写了一个,以便迁移.当然我这里仅仅针对的是迁移 ...

  7. oracle instr函数用法和(oracle 用instr 来代替 like)

    最近项目中出现oracle instr函数,于是在网上找了一下关于它的资料. Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符 ...

  8. java中instr函数,Oracle中instr函数使用方法

    INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始到字符的结尾就结束. 语 ...

  9. php instr函数,oracle的instr函数用法

    这几天在做一个项目的时候,做到关于用户组权限分配的问题,用到了Oracle的instr函数,现在好好学习下这个函数吧. 在Oracle/PLSQL中, instr 函数返回要截取的字符串在源字符串中的 ...

最新文章

  1. 指定eclipse启动使用的jdk,路径有空格的情况
  2. [Spring]01_环境配置
  3. 【翻译】asp.net core中使用MediatR
  4. POJ2411-Mondriaan's Dream【状态压缩dp】
  5. python access_Python3 os.access() 方法
  6. 系统架构设计师 - 23种设计模式(GOF)
  7. mysql n叉树_MySQL索引底层:B+树详解
  8. vivo应用商店服务器,vivo应用商店
  9. 系统篇: fstab 文件详解
  10. could not resolve property: qid of: org.lxh.myzngt.vo.Answer [SELECT COUNT(q.qid) FROM org.lxh.myzn
  11. Springboot 前后端交互 Long类型传输 前端获取数据受限
  12. redis之集群运维总结
  13. win10小喇叭出现红叉,解决办法(转)
  14. 这个公式,让你的学习更高效 (L先生说-微信公众号)
  15. *1-4 OJ 605 格雷码
  16. 初识C语言系列-5-完结篇-#define,指针,结构体
  17. 计算机软考access 题的做法_计算机二级Access 操作题汇总
  18. 十一、决策树和随机森林
  19. 将文件转存到钉钉的钉盘中
  20. [学点英语]一些常见的英语词汇缩写及读音纠正

热门文章

  1. c语言while将字符循环,C语言 while语句的用法详解
  2. 障碍物检测算法开发-(1)三种测距算法技术路线和实际应用
  3. Win10系统1080p屏幕在125%放大时部分软件模糊问题的解决
  4. Allegro Design Entry HDL(OrCAD Capture HDL)Library Explorer工具介绍
  5. Error: Unable to access jarfile /www/wwwroot/xxxx.jar--server.port=5635 问题解决
  6. Oracle11g:rman备份-备份集、镜像复制和加密
  7. 【Excel】Excel学习笔记 -- 多条件的排序和筛选
  8. linux 查看软件版本
  9. 爬虫程序 java_用JAVA做一个爬虫程序——Gecco
  10. 通过新兴的DeFi概念改善链上债务——期权