国外电商网站建设,深圳抖音seo,做微信公众号微网站,知名建筑设计网站Oracle用正则的方式循环切割字符串
需求#xff1a;有一个这样子的 Str “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’” #xff0c;然后我需要拿到每一个单号#xff0c;每一个单号都要走一遍固定的…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
判断。