Вы здесь

Немного про JSON и ORACLE 12

немного про JSON и ORACLE 12

create table info_user_v (
  id number primary key -- иднтификатор уникальный
, name varchar2(50) -- наименование 
, json_data varchar2(4000) -- данные JSON 
);



в oracle 12 есть специальное ограничение, чтобы добавлять в поле только данные json формата, и чтобы исключить ошибки со структурой JSON
добавим его к нашей таблице

alter table info_user_v add constraint c_1_json_data check(json_data is json);




заполним таблицу тестовыми данными
в качестве json используем следующую информацию об объекте

{
"title":"book",
"name":"Island",
"autor":{ 
  "firstname":"Robert",
  "firstname":"Stivenson" 
  }
}

 

insert into info_user_v(id, name, json_data)
values
(1, 'item1', '{
"title":"book",
"name":"Island",
"autor":{ 
  "firstname":"Robert",
  "lastname":"Stivenson" 
  }
}');

 

insert into info_user_v (id, name, json_data)
values
(2, 'item2', '{
"title":"new book",
"name":"Game of trones",
"autor":{ 
  "firstname":"Robert",
  "lastname":"BArateon" 
  }
}');
commit;


попробуем извлечь данные из наших таблиц

select id, json_value(json_data,'$.title') from info_user_v


1 book
2 new book
 

select id, json_value(json_data,'$.autor.firstname')
, json_value(json_data,'$.autor.lastname') from info_user_v where json_value(json_data,'$.title') like 'bo%'


1 Robert Stivenson

еще один способ

select id,tt.*  from info_user_v
, JSON_TABLE(json_data,'$.autor'  COLUMNS(firstname varchar2(50 char) path '$.firstname')) tt;

select id,tt.*  from info_user_v
, JSON_TABLE(json_data,'$'  COLUMNS(title varchar2(50 char) path '$.title')) tt where tt.title = 'book'


1 book

Post new comment

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
1 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.