Oracle - JSON Query select all(Oracle-JSON查询全选)
本文介绍了Oracle-JSON查询全选的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Oracle 12c上,我有一个表,其中有一列包含JSON字符串,没有嵌套的JSON数据。
我希望选择所有JSON数据,而不必指定每个属性,如果值不是字符串,是否可以将其转换为字符串?
SELECT
jt.*
FROM
my_table,
JSON_TABLE ( my_json_col, '$'
COLUMNS (
row_number FOR ORDINALITY,
phone_type VARCHAR2 ( 10 ) PATH '$.type',
phone_num VARCHAR2 ( 20 ) PATH '$.number'
)
)
AS jt
WHERE
user = '83';
示例数据:
{
"user_name": "Dave",
"phone_number": "13326415",
"married": false,
"age": 18
}
预期结果:
user_name phone_number married age
"Dave" "13326415" "false" "18"
推荐答案
使用纯SQL Select语句没有动态方法,但这样的PL/SQL代码块可能是一个选项,以便按需要显示
DECLARE
v_js_data my_table.my_json_col%TYPE;
v_js_obj JSON_OBJECT_T;
v_js_obj_list JSON_KEY_LIST;
v_title VARCHAR(4000);
v_value VARCHAR(4000);
BEGIN
SELECT my_json_col INTO v_js_data FROM my_table WHERE user_id = 83;
v_js_obj := JSON_OBJECT_T.PARSE(v_js_data);
v_js_obj_list := v_js_obj.get_keys;
FOR c IN 1 .. v_js_obj_list.COUNT
LOOP
v_title := v_title||RPAD(v_js_obj_list(c),20,' ');
v_value := v_value||RPAD(v_js_obj.GET_STRING(v_js_obj_list(c)),20,' ');
END LOOP;
DBMS_OUTPUT.PUT_LINE(v_title);
DBMS_OUTPUT.PUT_LINE(v_value);
END;
/
Demo
这篇关于Oracle-JSON查询全选的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Oracle-JSON查询全选


基础教程推荐
猜你喜欢
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01