Drop the table if it already exists
drop table JSON_EXAMPLE1
ORA-00942: table or view does not existMore Details: https://docs.oracle.com/error-help/db/ora-00942
Create a table to contain JSON data.
create table JSON_EXAMPLE1(
PKEY NUMBER(2),
JSON_COLUMN VARCHAR2(64)
)
Table created.
Insert Data
insert into JSON_EXAMPLE1 values (1, '{ "MyKey1" : "Value1", "MyKey2" : "Value2" }')
1 row(s) inserted.
Commit
commit
Statement processed.
Using Simplified Syntax for JSON on a column that does have an IS JSON constraint
select PKEY, ex.JSON_COLUMN.MyKey1, ex.JSON_COLUMN.MyKey2
from JSON_EXAMPLE1 ex
ORA-00904: "EX"."JSON_COLUMN"."MYKEY2": invalid identifierMore Details: https://docs.oracle.com/error-help/db/ora-00904
Using TREAT(... AS JSON) in directly in SQL to mark content as JSON
with MY_JSON_TABLE as
(
select PKEY, TREAT(JSON_COLUMN as JSON) JSON_COLUMN
from JSON_EXAMPLE1
)
select PKEY, j.JSON_COLUMN.MyKey1, j.JSON_COLUMN.MyKey2
from MY_JSON_TABLE j
PKEY | MYKEY1 | MYKEY2 | 1 | Value1 | Value2 |
---|
Create a view based on TREAT(... as JSON)
create or replace view JSON_ENABLED_VIEW
as
select TREAT(JSON_COLUMN as JSON) JSON_COLUMN
from JSON_EXAMPLE1
View created.
Using Simplified syntax against a View with JSON content
select j.JSON_COLUMN.MyKey1,j.JSON_COLUMN.MyKey2
from JSON_ENABLED_VIEW j
MYKEY1 | MYKEY2 | Value1 | Value2 |
---|
Generating JSON OBJECT from a column containing JSON
select JSON_OBJECT('MyObject' value JSON_COLUMN) JSON
from JSON_EXAMPLE1
JSON | {"MyObject":"{ \"MyKey1\" : \"Value1\", \"MyKey2\" : \"Value2\" }"} |
---|
Add a TREAT(... AS JSON) Operator to handle the content correctly
select PKEY, JSON_OBJECT('MyObject' value TREAT(JSON_COLUMN as JSON)) JSON
from JSON_EXAMPLE1
PKEY | JSON | 1 | {"MyObject":{ "MyKey1" : "Value1", "MyKey2" : "Value2" }} |
---|