create table myjsontable
(
id number,
json_data clob constraint is_json CHECK (json_data IS JSON )
)
Table created.
insert into myjsontable (id,json_data) values (1,'{"emp_name": "Yazhini", "emp_dob":"10/10/1995" }')
1 row(s) inserted.
insert into myjsontable (id,json_data) values (2,'{"emp_name": "Hema", "emp_dob":"10/10/1992" }')
1 row(s) inserted.
select * from myjsontable
ID | JSON_DATA | 1 | {"emp_name": "Yazhini", "emp_dob":"10/10/1995" } | 2 | {"emp_name": "Hema", "emp_dob":"10/10/1992" } |
---|
Accessing data from JSON column
select id,mj.json_data.emp_name,mj.json_data.emp_dob from myjsontable mj
ID | EMP_NAME | EMP_DOB | 1 | Yazhini | 10/10/1995 | 2 | Hema | 10/10/1992 |
---|
Lets create table with out JSON constraint present
create table myjsontable_nocons
(
id number,
json_data varchar2(1000)
)
Table created.
When there is no constraint available, we cannot access the JSON attributes directly and it fails
select id,mj.json_data.emp_name,mj.json_data.emp_dob from myjsontable_nocons mj
ORA-00904: "MJ"."JSON_DATA"."EMP_DOB": invalid identifierMore Details: https://docs.oracle.com/error-help/db/ora-00904
insert into myjsontable_nocons (id,json_data) values (2,'{"emp_name": "Hema", "emp_dob":"10/10/1992" }')
1 row(s) inserted.
insert into myjsontable_nocons (id,json_data) values (1,'{"emp_name": "Yazhini", "emp_dob":"10/10/1995" }')
1 row(s) inserted.
use Treat as JSON statement in combination with "WITH" statement to access JSON data that is stored in regular CLOB or NVARCHAR columns.
with result as
(
select id, TREAT(json_data as JSON) json_data
from myjsontable_nocons
)
select id, r.json_data.emp_name, r.json_data.emp_dob
from result r
ID | EMP_NAME | EMP_DOB | 2 | Hema | 10/10/1992 | 1 | Yazhini | 10/10/1995 |
---|