基于@David E. Veliev answer,这是多行输入的查询。如果以下查询对您有用,请考虑投票赞成原始答案。
SELECT SUBSTR
FROM (WITH TEMPLATES AS (SELECT '\w+' REGEXP FROM DUAL)
SELECT ID,
CONNECT_BY_ROOT ID CBR,
LEVEL LVL,
REGEXP_SUBSTR(STR, TEMPLATES.REGEXP, 1, LEVEL) SUBSTR
FROM (SELECT 1 ID,
'Txa233141b Ta233141 Ta233142 Ta233147 Ta233148' AS STR
FROM DUAL
UNION
SELECT 2 ID,
'2 22222222222222Ta233141 2Ta233142 2Ta233147' AS STR
FROM DUAL
UNION
SELECT 3 ID,
'3Txa233141b 3Ta233141 3Ta233142' AS STR
FROM DUAL)
JOIN TEMPLATES
ON 1 = 1
CONNECT BY REGEXP_INSTR(STR, TEMPLATES.REGEXP, 1, LEVEL) > 0)
WHERE ID = CBR
GROUP BY ID,
CBR,
LVL,
SUBSTR
ORDER BY ID,
LVL;
输入:
身份证号
== ===============================================
1 Txa233141b Ta233141 Ta233142 Ta233147 Ta233148
2 2 22222222222222Ta233141 2Ta233142 2Ta233147
3 3Txa233141b 3Ta233141 3Ta233142
输出:
SUBSTR
=======================
TXA233141B
Ta233141
Ta233142
Ta233147
Ta233148
2
22222222222222Ta233141
2Ta233142
2Ta233147
3Txa233141b
3Ta233141
3Ta233142