Stack Overflow на русском Asked on January 15, 2021
Как выбрать значения из столбца, который выглядит так:
{"key1":"value1","key2":"value2","key3":"value3", }
Свободный перевод вопроса Select values from column like {"key1":value1,"key2":value2, } in PLSQL от участника Andrey
Для работы с JSON в PL/SQL доступны, кроме некоторых SQL функций,
также набор обьектных типов. Вот решение на чистом PL/SQL (db<>fiddle):
create or replace package arrpack as
type pairr is record (key varchar2 (8), value varchar2 (8));
type pairt is table of pairr;
type jdoct is table of varchar2 (4000);
end;
/
var rc refcursor
declare
jdoc arrpack.jdoct :=
arrpack.jdoct ('{"key1":"value1","key2":"value2","key3":"value3"}');
pairs arrpack.pairt := arrpack.pairt ();
keys json_key_list;
jobj json_object_t;
begin
jobj := json_object_t (jdoc(1));
keys := jobj.get_keys;
pairs.extend (keys.count);
for ix in 1 .. keys.count loop
pairs(ix) := arrpack.pairr (keys(ix), jobj.get_string (keys(ix)));
end loop;
open :rc for select * from table (pairs);
end;
/
Результат:
KEY VALUE
-------- --------
key1 value1
key2 value2
key3 value3
Answered by 0xdb on January 15, 2021
Это выглядит как JSON. Если это действительно так, то такой пример покажет, как это сделать (заметьте, что нужен Oracle 12c или выше):
create table t (col varchar2 (100));
alter table t add constraint ch_json check (col is json);
insert into t values ('{"key1":"value1","key2":"value2","key3":"value3", }');
select json_value(col, '$.key1')as value, col from t;
Результат:
VALUE COL
-------- ------------------------------------------------------
value1 {"key1":"value1","key2":"value2","key3":"value3", }
Свободный перевод ответа от участника @Littlefoot
Answered by 0xdb on January 15, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP