我一直在想一个问题。以下是输入字符串
1034536455702130340053769240340002208520191202134036
我需要做的是将此字符串拆分为以下内容
03453645570
03400537692
03400022085
在这里,每个需要选择的字符串都以“ 03”开头。
我可以用PL / SQL代码做到这一点,方法是在循环中从“ 03”开始选择每个子字符串,然后从左右移除多余的字符并在每次迭代中仅获得11个字符之后,将每个值连接起来。然后使用REGEXP_SUBSTR获得所需的结果。但是,这种方法涉及太多代码。有没有一种方法可以使用SQL查询来实现?
SELECT UPPER (
REGEXP_SUBSTR ('03453645570,03400537692,03400022085',
'[^,]+',
1,
LEVEL))
AS VAL
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('03453645570,03400537692,03400022085',
'[^,]+',
1,
LEVEL)
IS NOT NULL
您可以将现有代码与原始输入字符串一起使用,只需将正则表达式更改为匹配03
后跟9位数字即可:
SELECT REGEXP_SUBSTR ('1034536455702130340053769240340002208520191202134036',
'03[0-9]{9}',
1,
LEVEL)
AS VAL
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('1034536455702130340053769240340002208520191202134036',
'03[0-9]{9}',
1,
LEVEL)
IS NOT NULL
输出量
VAL
03453645570
03400537692
03400022085
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句