Oracle 将分隔符数据转换为行和列
我在结果列中有原始数据,如下所示,用分号分隔 病例ID;HPMN;VPMN;IMSI;案例创建时间;病例报告时间;结案时间;最后通话时间;欺诈类型;报告评论;创造特别提款权价值(TAP);特别提款权创造价值(NRT);SDR值-报告(TAP);报告的SDR值(NRT);SDR值-关闭(抽头);SDR值-关闭(NRT);SDR值-总计(TAP);SDR值-总计(NRT);特别提款权价值——欺诈损失(TAP);特别提款权价值——欺诈损失(NRT);病例状态ID;病例状况;分析员姓名-指定;分析员姓名-关闭;组;旗帜7014472;NLXLT;ESPAT;204046205787443;17.05.2018 00:00;17.05.2018 05:57;;18.05.2018 06:45:09;高使用要求;;10.35;0; 10.35;0;0;0;20.72;0;10.37;0;512;悬而未决的格洛丽安娜;洛克斯;各组P1;非托管;7014473;OMNNT;ARETC;422030204010256;17.05.2018 00:01;17.05.2018 05:57;;15.05.2018 19:47:09;OMNNT 10MB和50 SDR;;51.35 ;0;51.35;0;0;0;51.35 ;0;0;0;512;悬而未决的格洛丽安娜;乔丹;各组P1;非托管;7014474;NLXLT;CZECM;204046868687429;17.05.2018 00:02;;17.05.2018 00:24;17.05.2018 15:36:23;呼叫第三国;;0;0;0;0;0;0;.44;0;.44;0;2048;关闭而不是欺诈;格洛丽安娜;格洛丽安娜;各组P1;非托管; 7014475;DOMCL;PRICL;370021204427525;17.05.2018 00:03;;17.05.2018 00:26;17.05.2018 22:44:19;呼叫第三国;;0;230.41;0;0;0;230.41;1.94;1200.07;1.94;969.66;2048;关闭而不是欺诈;格洛丽安娜;格洛丽安娜;各组P1;非托管强> 但我需要这样的输出Oracle 将分隔符数据转换为行和列,oracle,oracle10g,Oracle,Oracle10g,我在结果列中有原始数据,如下所示,用分号分隔 病例ID;HPMN;VPMN;IMSI;案例创建时间;病例报告时间;结案时间;最后通话时间;欺诈类型;报告评论;创造特别提款权价值(TAP);特别提款权创造价值(NRT);SDR值-报告(TAP);报告的SDR值(NRT);SDR值-关闭(抽头);SDR值-关闭(NRT);SDR值-总计(TAP);SDR值-总计(NRT);特别提款权价值——欺诈损失(TAP);特别提款权价值——欺诈损失(NRT);病例状态ID;病例状况;分析员姓名-指定;分析员姓名
我尝试了正则表达式,但无法获得所需的输出这将得到前16列。。。。但您可以根据需要按照相同的模式添加额外的列: Oracle 11g R2架构设置:
CREATE TABLE table_name ( value ) AS
SELECT 'Case ID;HPMN;VPMN;IMSI;Case Creation Time;Case Reporting Time;Case Closure Time;Last Call Time;Fraud Type;Reporting Remarks;SDR Value - Created (TAP);SDR Value - Created (NRT);SDR Value - Reported (TAP);SDR Value - Reported (NRT);SDR Value - Closed (TAP);SDR Value - Closed (NRT);SDR Value - Total (TAP);SDR Value - Total (NRT);SDR Value - Fraud Loss (TAP);SDR Value - Fraud Loss (NRT);Case Status ID;Case Status;Analyst Name - Assigned;Analyst Name - Closure;Group;Flag;7014472;NLXLT;ESPAT;204046205787443;17.05.2018 00:00;17.05.2018 05:57;;18.05.2018 06:45:09;High Usage Request ;;10.35;0; 10.35;0;0;0;20.72;0;10.37;0;512;Pending;Gloriana;Lokesh;AllRoamingGroup P1;non-hosted;7014473;OMNNT;ARETC;422030204010256;17.05.2018 00:01;17.05.2018 05:57;;15.05.2018 19:47:09;OMNNT 10MB & 50 SDRs;;51.35 ;0;51.35;0;0;0;51.35 ;0;0;0;512;Pending;Gloriana;Jordan;AllRoamingGroup P1;non-hosted;7014474;NLXLT;CZECM;204046868687429;17.05.2018 00:02;;17.05.2018 00:24;17.05.2018 15:36:23;Call third country;;0;0;0;0;0;0;.44;0;.44;0;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted; 7014475;DOMCL;PRICL;370021204427525;17.05.2018 00:03;;17.05.2018 00:26;17.05.2018 22:44:19;Call third country;;0;230.41;0;0;0;230.41;1.94;1200.07;1.94;969.66;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted;' FROM DUAL;
WITH data (
value,
lvl,
maxlvl,
Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
) AS (
SELECT value,
1,
REGEXP_COUNT( value, '([^;]*);' ) / 26,
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 16, NULL, 1 )
FROM table_name
UNION ALL
SELECT value,
lvl+1,
maxlvl,
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 16, NULL, 1 )
FROM data
WHERE lvl < maxlvl
)
SELECT Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
FROM data
WHERE lvl > 1
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
SELECT RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 1 ), ';' ) AS Case_ID,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 2 ), ';' ) AS HPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 3 ), ';' ) AS VPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 4 ), ';' ) AS IMSI,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 5 ), ';' ) AS Case_Creation_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 6 ), ';' ) AS Case_Reporting_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 7 ), ';' ) AS Case_Closure_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 8 ), ';' ) AS Last_Call_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 9 ), ';' ) AS Fraud_Type,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 10 ), ';' ) AS Reporting_Remarks,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 11 ), ';' ) AS SDR_Value_Created_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 12 ), ';' ) AS SDR_Value_Created_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 13 ), ';' ) AS SDR_Value_Reported_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 14 ), ';' ) AS SDR_Value_Reported_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 15 ), ';' ) AS SDR_Value_Closed_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 16 ), ';' ) AS SDR_Value_Closed_NRT
FROM table_name t
CROSS JOIN
TABLE(
CAST(
MULTISET(
SELECT LEVEL
FROM DUAL
CONNECT BY REGEXP_SUBSTR( t.value, '.*?;', 1, LEVEL*26 + 1 ) IS NOT NULL
)
AS SYS.ODCINUMBERLIST
)
) l
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
查询1:
CREATE TABLE table_name ( value ) AS
SELECT 'Case ID;HPMN;VPMN;IMSI;Case Creation Time;Case Reporting Time;Case Closure Time;Last Call Time;Fraud Type;Reporting Remarks;SDR Value - Created (TAP);SDR Value - Created (NRT);SDR Value - Reported (TAP);SDR Value - Reported (NRT);SDR Value - Closed (TAP);SDR Value - Closed (NRT);SDR Value - Total (TAP);SDR Value - Total (NRT);SDR Value - Fraud Loss (TAP);SDR Value - Fraud Loss (NRT);Case Status ID;Case Status;Analyst Name - Assigned;Analyst Name - Closure;Group;Flag;7014472;NLXLT;ESPAT;204046205787443;17.05.2018 00:00;17.05.2018 05:57;;18.05.2018 06:45:09;High Usage Request ;;10.35;0; 10.35;0;0;0;20.72;0;10.37;0;512;Pending;Gloriana;Lokesh;AllRoamingGroup P1;non-hosted;7014473;OMNNT;ARETC;422030204010256;17.05.2018 00:01;17.05.2018 05:57;;15.05.2018 19:47:09;OMNNT 10MB & 50 SDRs;;51.35 ;0;51.35;0;0;0;51.35 ;0;0;0;512;Pending;Gloriana;Jordan;AllRoamingGroup P1;non-hosted;7014474;NLXLT;CZECM;204046868687429;17.05.2018 00:02;;17.05.2018 00:24;17.05.2018 15:36:23;Call third country;;0;0;0;0;0;0;.44;0;.44;0;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted; 7014475;DOMCL;PRICL;370021204427525;17.05.2018 00:03;;17.05.2018 00:26;17.05.2018 22:44:19;Call third country;;0;230.41;0;0;0;230.41;1.94;1200.07;1.94;969.66;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted;' FROM DUAL;
WITH data (
value,
lvl,
maxlvl,
Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
) AS (
SELECT value,
1,
REGEXP_COUNT( value, '([^;]*);' ) / 26,
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 16, NULL, 1 )
FROM table_name
UNION ALL
SELECT value,
lvl+1,
maxlvl,
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 16, NULL, 1 )
FROM data
WHERE lvl < maxlvl
)
SELECT Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
FROM data
WHERE lvl > 1
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
SELECT RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 1 ), ';' ) AS Case_ID,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 2 ), ';' ) AS HPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 3 ), ';' ) AS VPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 4 ), ';' ) AS IMSI,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 5 ), ';' ) AS Case_Creation_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 6 ), ';' ) AS Case_Reporting_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 7 ), ';' ) AS Case_Closure_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 8 ), ';' ) AS Last_Call_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 9 ), ';' ) AS Fraud_Type,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 10 ), ';' ) AS Reporting_Remarks,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 11 ), ';' ) AS SDR_Value_Created_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 12 ), ';' ) AS SDR_Value_Created_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 13 ), ';' ) AS SDR_Value_Reported_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 14 ), ';' ) AS SDR_Value_Reported_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 15 ), ';' ) AS SDR_Value_Closed_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 16 ), ';' ) AS SDR_Value_Closed_NRT
FROM table_name t
CROSS JOIN
TABLE(
CAST(
MULTISET(
SELECT LEVEL
FROM DUAL
CONNECT BY REGEXP_SUBSTR( t.value, '.*?;', 1, LEVEL*26 + 1 ) IS NOT NULL
)
AS SYS.ODCINUMBERLIST
)
) l
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
查询2:
CREATE TABLE table_name ( value ) AS
SELECT 'Case ID;HPMN;VPMN;IMSI;Case Creation Time;Case Reporting Time;Case Closure Time;Last Call Time;Fraud Type;Reporting Remarks;SDR Value - Created (TAP);SDR Value - Created (NRT);SDR Value - Reported (TAP);SDR Value - Reported (NRT);SDR Value - Closed (TAP);SDR Value - Closed (NRT);SDR Value - Total (TAP);SDR Value - Total (NRT);SDR Value - Fraud Loss (TAP);SDR Value - Fraud Loss (NRT);Case Status ID;Case Status;Analyst Name - Assigned;Analyst Name - Closure;Group;Flag;7014472;NLXLT;ESPAT;204046205787443;17.05.2018 00:00;17.05.2018 05:57;;18.05.2018 06:45:09;High Usage Request ;;10.35;0; 10.35;0;0;0;20.72;0;10.37;0;512;Pending;Gloriana;Lokesh;AllRoamingGroup P1;non-hosted;7014473;OMNNT;ARETC;422030204010256;17.05.2018 00:01;17.05.2018 05:57;;15.05.2018 19:47:09;OMNNT 10MB & 50 SDRs;;51.35 ;0;51.35;0;0;0;51.35 ;0;0;0;512;Pending;Gloriana;Jordan;AllRoamingGroup P1;non-hosted;7014474;NLXLT;CZECM;204046868687429;17.05.2018 00:02;;17.05.2018 00:24;17.05.2018 15:36:23;Call third country;;0;0;0;0;0;0;.44;0;.44;0;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted; 7014475;DOMCL;PRICL;370021204427525;17.05.2018 00:03;;17.05.2018 00:26;17.05.2018 22:44:19;Call third country;;0;230.41;0;0;0;230.41;1.94;1200.07;1.94;969.66;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted;' FROM DUAL;
WITH data (
value,
lvl,
maxlvl,
Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
) AS (
SELECT value,
1,
REGEXP_COUNT( value, '([^;]*);' ) / 26,
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 16, NULL, 1 )
FROM table_name
UNION ALL
SELECT value,
lvl+1,
maxlvl,
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 16, NULL, 1 )
FROM data
WHERE lvl < maxlvl
)
SELECT Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
FROM data
WHERE lvl > 1
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
SELECT RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 1 ), ';' ) AS Case_ID,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 2 ), ';' ) AS HPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 3 ), ';' ) AS VPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 4 ), ';' ) AS IMSI,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 5 ), ';' ) AS Case_Creation_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 6 ), ';' ) AS Case_Reporting_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 7 ), ';' ) AS Case_Closure_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 8 ), ';' ) AS Last_Call_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 9 ), ';' ) AS Fraud_Type,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 10 ), ';' ) AS Reporting_Remarks,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 11 ), ';' ) AS SDR_Value_Created_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 12 ), ';' ) AS SDR_Value_Created_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 13 ), ';' ) AS SDR_Value_Reported_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 14 ), ';' ) AS SDR_Value_Reported_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 15 ), ';' ) AS SDR_Value_Closed_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 16 ), ';' ) AS SDR_Value_Closed_NRT
FROM table_name t
CROSS JOIN
TABLE(
CAST(
MULTISET(
SELECT LEVEL
FROM DUAL
CONNECT BY REGEXP_SUBSTR( t.value, '.*?;', 1, LEVEL*26 + 1 ) IS NOT NULL
)
AS SYS.ODCINUMBERLIST
)
) l
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
:
CREATE TABLE table_name ( value ) AS
SELECT 'Case ID;HPMN;VPMN;IMSI;Case Creation Time;Case Reporting Time;Case Closure Time;Last Call Time;Fraud Type;Reporting Remarks;SDR Value - Created (TAP);SDR Value - Created (NRT);SDR Value - Reported (TAP);SDR Value - Reported (NRT);SDR Value - Closed (TAP);SDR Value - Closed (NRT);SDR Value - Total (TAP);SDR Value - Total (NRT);SDR Value - Fraud Loss (TAP);SDR Value - Fraud Loss (NRT);Case Status ID;Case Status;Analyst Name - Assigned;Analyst Name - Closure;Group;Flag;7014472;NLXLT;ESPAT;204046205787443;17.05.2018 00:00;17.05.2018 05:57;;18.05.2018 06:45:09;High Usage Request ;;10.35;0; 10.35;0;0;0;20.72;0;10.37;0;512;Pending;Gloriana;Lokesh;AllRoamingGroup P1;non-hosted;7014473;OMNNT;ARETC;422030204010256;17.05.2018 00:01;17.05.2018 05:57;;15.05.2018 19:47:09;OMNNT 10MB & 50 SDRs;;51.35 ;0;51.35;0;0;0;51.35 ;0;0;0;512;Pending;Gloriana;Jordan;AllRoamingGroup P1;non-hosted;7014474;NLXLT;CZECM;204046868687429;17.05.2018 00:02;;17.05.2018 00:24;17.05.2018 15:36:23;Call third country;;0;0;0;0;0;0;.44;0;.44;0;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted; 7014475;DOMCL;PRICL;370021204427525;17.05.2018 00:03;;17.05.2018 00:26;17.05.2018 22:44:19;Call third country;;0;230.41;0;0;0;230.41;1.94;1200.07;1.94;969.66;2048;Closed Not Fraud;Gloriana;Gloriana;AllRoamingGroup P1;non-hosted;' FROM DUAL;
WITH data (
value,
lvl,
maxlvl,
Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
) AS (
SELECT value,
1,
REGEXP_COUNT( value, '([^;]*);' ) / 26,
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, 0*26 + 16, NULL, 1 )
FROM table_name
UNION ALL
SELECT value,
lvl+1,
maxlvl,
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 1, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 2, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 3, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 4, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 5, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 6, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 7, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 8, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 9, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 10, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 11, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 12, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 13, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 14, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 15, NULL, 1 ),
REGEXP_SUBSTR( value, '([^;]*);', 1, lvl*26 + 16, NULL, 1 )
FROM data
WHERE lvl < maxlvl
)
SELECT Case_ID,
HPMN,
VPMN,
IMSI,
Case_Creation_Time,
Case_Reporting_Time,
Case_Closure_Time,
Last_Call_Time,
Fraud_Type,
Reporting_Remarks,
SDR_Value_Created_TAP,
SDR_Value_Created_NRT,
SDR_Value_Reported_TAP,
SDR_Value_Reported_NRT,
SDR_Value_Closed_TAP,
SDR_Value_Closed_NRT
FROM data
WHERE lvl > 1
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
SELECT RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 1 ), ';' ) AS Case_ID,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 2 ), ';' ) AS HPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 3 ), ';' ) AS VPMN,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 4 ), ';' ) AS IMSI,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 5 ), ';' ) AS Case_Creation_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 6 ), ';' ) AS Case_Reporting_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 7 ), ';' ) AS Case_Closure_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 8 ), ';' ) AS Last_Call_Time,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 9 ), ';' ) AS Fraud_Type,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 10 ), ';' ) AS Reporting_Remarks,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 11 ), ';' ) AS SDR_Value_Created_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 12 ), ';' ) AS SDR_Value_Created_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 13 ), ';' ) AS SDR_Value_Reported_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 14 ), ';' ) AS SDR_Value_Reported_NRT,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 15 ), ';' ) AS SDR_Value_Closed_TAP,
RTRIM( REGEXP_SUBSTR( value, '.*?;', 1, l.COLUMN_VALUE*26 + 16 ), ';' ) AS SDR_Value_Closed_NRT
FROM table_name t
CROSS JOIN
TABLE(
CAST(
MULTISET(
SELECT LEVEL
FROM DUAL
CONNECT BY REGEXP_SUBSTR( t.value, '.*?;', 1, LEVEL*26 + 1 ) IS NOT NULL
)
AS SYS.ODCINUMBERLIST
)
) l
| CASE_ID | HPMN | VPMN | IMSI | CASE_CREATION_TIME | CASE_REPORTING_TIME | CASE_CLOSURE_TIME | LAST_CALL_TIME | FRAUD_TYPE | REPORTING_REMARKS | SDR_VALUE_CREATED_TAP | SDR_VALUE_CREATED_NRT | SDR_VALUE_REPORTED_TAP | SDR_VALUE_REPORTED_NRT | SDR_VALUE_CLOSED_TAP | SDR_VALUE_CLOSED_NRT |
|----------|-------|-------|-----------------|--------------------|---------------------|-------------------|---------------------|----------------------|-------------------|-----------------------|-----------------------|------------------------|------------------------|----------------------|----------------------|
| 7014472 | NLXLT | ESPAT | 204046205787443 | 17.05.2018 00:00 | 17.05.2018 05:57 | (null) | 18.05.2018 06:45:09 | High Usage Request | (null) | 10.35 | 0 | 10.35 | 0 | 0 | 0 |
| 7014473 | OMNNT | ARETC | 422030204010256 | 17.05.2018 00:01 | 17.05.2018 05:57 | (null) | 15.05.2018 19:47:09 | OMNNT 10MB & 50 SDRs | (null) | 51.35 | 0 | 51.35 | 0 | 0 | 0 |
| 7014474 | NLXLT | CZECM | 204046868687429 | 17.05.2018 00:02 | (null) | 17.05.2018 00:24 | 17.05.2018 15:36:23 | Call third country | (null) | 0 | 0 | 0 | 0 | 0 | 0 |
| 7014475 | DOMCL | PRICL | 370021204427525 | 17.05.2018 00:03 | (null) | 17.05.2018 00:26 | 17.05.2018 22:44:19 | Call third country | (null) | 0 | 230.41 | 0 | 0 | 0 | 230.41 |
数据在表格中吗?以术语或SQL相关表格给出准确的示例数据和预期结果。格式化数据。它几乎不可读。@KaushikNayak不幸的是,数据是单行格式的,所以,您从某处以单个字符串的形式接收整个数据,并希望将其拆分为行和列?@KaushikNayak:是的correct@Anil更新了第二个版本,我认为可以在10g中使用(但无法测试,因为我没有可用的版本)。我已经用我的列名和表格替换了值(结果)、表名(ME_MACH_FRAUDPROT_REPORT)。我看到ORA-00904:“t”。“结果”:无效标识符错误我得到ORA-00904:“t”。“结果”:无效标识符00904.00000-%s:由REGEXP\u SUBSTR连接的线路的无效标识符”(t.结果,'%26?;',1,级别*26+1)不是NULL@Anil它可以在11g上运行,我没有10g实例来测试它,所以这是一个你必须自己调试的实例,因为我无法在我可用的实例上复制你的错误。@Anil:我建议你与生成数据的应用程序的人员/所有者坐在一起,说服他们,并同意在标准格式:比如csv、xml、json等。然后您可以轻松地使用sqlloader、sql developer或其他任何格式。理想情况下,清理消息数据文本不应该是数据库代码的工作。sql/PLSQL仍然能够很好地完成这类任务,但如果您不了解如何执行,您可能很难维护解决方案它起作用了。