我需要在Oracle 12c v12.1.0.2中将JSON转换为数据表(键值列)。
例如:有一个JSON字符串,如 {"ID": 10, "Description": "TestJSON", "status":"New"}
我需要将其转换为.NET语言。
Column1 Column2
------------------------------------
ID 10
Description TestJSON
status New
现在,我的JSON字符串可以改变属性的数量,因此我需要保持转换的动态。
任何帮助将被感激。
谢谢!我需要在Oracle中把JSON转换成数据表(键值列)。
你可以使用层次结构查询和实现它。REGEXP
以下是:
SQL> with dataa(d) as
2 (select '["ID": 10, "Description": "TestJSON", "status":"New"]' from dual)
3 --
4 -- Your query starts from here
5 SELECT TRIM('"' FROM REGEXP_SUBSTR(STR,'[^:]+',1,1)) AS COL1,
6 TRIM('"' FROM TRIM(REGEXP_SUBSTR(STR,'[^:]+',1,2))) AS COL2
7 FROM
8 (SELECT t.d, trim(REGEXP_SUBSTR(trim(']' from trim('[' from T.D)), '[^,]+', 1, COLUMN_VALUE)) as str
9 FROM DATAA T
10 CROSS JOIN TABLE ( CAST(MULTISET(
11 SELECT LEVEL FROM DUAL CONNECT BY
12 LEVEL <= LENGTH(REGEXP_REPLACE(T.D, '[^,]+')) + 1
13 ) AS SYS.ODCINUMBERLIST) ) LEVELS);
COL1 COL2
--------------- --------------------
ID 10
Description TestJSON
status New
SQL>