我有一列包含键-值对中的值.但我只需要从该专栏中提取价值.
输入表:
+------+---------------------------------+
| Col1 | Col2 |
+------+---------------------------------+
| 1 | key1:Val1;Key2:Val2;;;Key5:Val5 |
+------+---------------------------------+
预期输出:
+------+--------------------------------+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |
+------+--------------------------------+------+------+------+------+
| 1 | key1:Val1;Key2:Val2;;Key4:Val4 | Val1 | Val2 | | Val4 |
+------+--------------------------------+------+------+------+------+
解释:
因为Col2
包含键-值对中的值,所以我只需要从其中提取value
并将其存储在不同的列中,并且只要没有值,我们就需要将其置空.所以基本上,需要识别;
和:
.
我的try :
SELECT
Col1,
SUBSTR(REGEXP_SUBSTR(Col1, 'Key1:(.*?)(;|$)', 1, 1, NULL, 1), 5) AS Col2
From table_name;
DB - Oracle Sql Developer tool
Version - 19c
我不确定这是否是处理这一需求并因此寻求帮助的最佳方式.