Если вы используете Oracle 18c или более позднюю версию.
Ваши данные очень похожи на JSON. Итак, будем составлять JSON.
После этого все легко.
Последовательный порядок токенов не имеет значения.
Если вам нужны значения, начиная с 4-й позиции, вы можете использовать для этого функцию SUBSTR(json_value(j, '$.XWID'), 4)
и так далее.
SQL Fiddle
SQL
CREATE TABLE tbl (ID int, fld_126 VARCHAR2(100) NOT NULL);
INSERT INTO tbl (ID, fld_126)
WITH rs AS (
SELECT 1, 'XWID9998887766XDEVmmmXZON8XPHN9998887766' FROM dual UNION ALL
SELECT 2, 'XDEVppppXWID999988877766XZON4XPHN9097976655' FROM dual
)
SELECT * FROM rs;
SELECT ID, j
, json_value(j, '$.XWID') as XWID -- SUBSTR(json_value(j, '$.XWID'), 4)
, json_value(j, '$.XDEV') as XDEV
, json_value(j, '$.XZON') as XZON
, json_value(j, '$.XPHN') as XDEV
FROM tbl t
CROSS APPLY (
SELECT treat(REPLACE('{' || REPLACE(REPLACE(REPLACE(REPLACE(fld_126
,'XWID','","XWID":"')
,'XDEV','","XDEV":"')
,'XZON','","XZON":"')
,'XPHN','","XPHN":"')
, '{",','{') || '"}' as json) As j FROM dual
) CrossApplied;
Результат
| ID | J | XWID | XDEV | XZON | XPHN |
|----|----------------------------------------------------------------------|--------------|------|------|------------|
| 1 | {"XWID":"9998887766","XDEV":"mmm","XZON":"8","XPHN":"9998887766"} | 9998887766 | mmm | 8 | 9998887766 |
| 2 | {"XDEV":"pppp","XWID":"999988877766","XZON":"4","XPHN":"9097976655"} | 999988877766 | pppp | 4 | 9097976655 |