値を区別し、文字列を使用して列を作成します。 私の文字列形式は以下の通りです:oracleの文字列から列を作成する
|| 1 | 21 | -1 | -1 | -1 | 0 ||||
私はすでにinstrまたはregexp_instrを使用しようとしましたが、一部の行の最初の文字がnullの場合、間違ったデータを返します。セパレータは '|' 。あなたはこの問題に私を助けることができれば
当然です。
値を区別し、文字列を使用して列を作成します。 私の文字列形式は以下の通りです:oracleの文字列から列を作成する
|| 1 | 21 | -1 | -1 | -1 | 0 ||||
私はすでにinstrまたはregexp_instrを使用しようとしましたが、一部の行の最初の文字がnullの場合、間違ったデータを返します。セパレータは '|' 。あなたはこの問題に私を助けることができれば
当然です。
クエリ:
WITH sample_data ("COMMENT") AS (
SELECT '||1|21|-1|-1|-1|0||||' FROM DUAL
)
SELECT REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 1, NULL, 1) AS col1,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 2, NULL, 1) AS col2,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 3, NULL, 1) AS col3,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 4, NULL, 1) AS col4,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 5, NULL, 1) AS col5,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 6, NULL, 1) AS col6,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 7, NULL, 1) AS col7,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 8, NULL, 1) AS col8,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 9, NULL, 1) AS col9,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 10, NULL, 1) AS col10,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 11, NULL, 1) AS col11,
REGEXP_SUBSTR("COMMENT", '(.*?)(\||$)', 1, 12, NULL, 1) AS col12
FROM sample_data;
出力:
COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10 COL11 COL12
---- ---- ---- ---- ---- ---- ---- ---- ---- ----- ----- -----
1 21 -1 -1 -1 0
誰も助けることができますか? – arash