当前位置: 首页 > news >正文

Oracle切割字符串的方法,SQL语句完成。

Oracle用正则的方式循环切割字符串

需求:有一个这样子的
Str = “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’”
,然后我需要拿到每一个单号,每一个单号都要走一遍固定的逻辑。

方法:
我们需要使用oracle中的正则表达式进行字符匹配,去掉“|”这个的特殊符号。

然后还要使用递归子句来执行递归操作,以便于完整的操作这个字符串。

为了能够正常的执行,还需要加上一个递归条件。

这个sql大抵是这样的。


SELECT TRIM(REGEXP_SUBSTR('STR', '[^|]+', 1, LEVEL)) AS single_order
FROM dual
CONNECT BY REGEXP_SUBSTR('STR', '[^|]+', 1, LEVEL) IS NOT NULLAND PRIOR SYS_GUID() IS NOT NULL
START WITH 'STR' IS NOT NULL;

这里面的输出结果为:

在这里插入图片描述
这样子在使用游标,就可以循环拿到单号,从第一个到最后一个了。

判断一个字符串中是否包含某个字符串?

在这里插入图片描述

首先看到,这个里面是有三个单号,然后是有两个“|”的。

在这里插入图片描述
直接查某一个列,出现了这个符号多少次。

SELECT REGEXP_COUNT(indc003, '\|') 出现多少次
FROM indc_t
WHERE indcent = 99 and indcdocno = 'CNJ-D2B-202308000018'

在这里插入图片描述
直接查列名,也可以直接count看一下,如果大于0 就说明是存在的。

使用

  • instr(indc003,‘|’) > 0

判断。

http://www.lryc.cn/news/123935.html

相关文章:

  • Https、CA证书、数字签名
  • Jmeter-压测时接口按照顺序执行-临界部分控制器
  • linux 文件权限识别及其修改
  • Java:简单算法:冒泡排序、选择排序、二分查找
  • C、C++项目中 configure、makefile.am、makefile.in、makefile 之间的关系
  • 【网络】传输层——UDP | TCP(协议格式确认应答超时重传连接管理)
  • 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
  • ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加载ArcGIS地图
  • 服务器扩展未生效
  • Jenkins构建自由风格项目发布jar到服务器
  • Rabbitmq延迟消息
  • miniExcel 生成excel
  • Handler详解
  • Feign忽略Https的SSL最佳方案(且保证负载均衡将失效)
  • Neo4j之SET基础
  • Redis 缓存过期及删除
  • 万字长文·通俗易懂·一篇包掌握——输入/输出·文件操作(c语言超详细系列)(二)
  • 【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数
  • 【Terraform学习】本地变量(Terraform配置语言学习)
  • zabbix自动注册服务器以及部署代理服务器
  • 掌握Python的X篇_32_使用python编辑pdf文件_pdfrw
  • 【软件工程】软件测试
  • Android性能优化——内存优化
  • Android Studio实现图形验证码
  • JAVA面试数据库篇
  • Android高手进阶教程(三)之----Android 中自定义View的应用.
  • 第一百一十三回 dart中的getter/setter方法
  • 搭建Docker环境
  • 微服务08-多级缓存
  • Intel汇编和ATT汇编的区别?