sql - JSON 值 - Oracle PL/SQL:多个字段
问题描述
我有一个带有以下示例条目的 HCLOB
"relist":[{"name":"XYZ","action":["Manager","Specific User List"],"flag":false}]
当我尝试使用 JSON_VALUE 获取名称或标志时,我能够获取它,因为它具有单个字段,但我想获取操作的值。我读到 JSON_VALUE 只支持 1 个条目。
是否有任何解决方法可以同时获得行动价值?
问候。
解决方案
JSON_TABLE
与嵌套路径一起使用:
SELECT j.*
FROM table_name t
CROSS APPLY JSON_TABLE(
t.data,
'$.relist[*]'
COLUMNS (
name VARCHAR2(20) PATH '$.name',
flag VARCHAR2(5) PATH '$.flag',
NESTED PATH '$.action[*]' COLUMNS(
action VARCHAR2(20) PATH '$'
)
)
) j
其中,对于样本数据:
CREATE TABLE table_name ( data CLOB CHECK ( data IS JSON ) );
INSERT INTO table_name ( data ) VALUES (
'{"relist":[{"name":"XYZ","action":["Manager","Specific User List"],"flag":false}]}'
);
输出:
姓名 | 旗帜 | 行动 :--- | :---- | :----------------- XYZ | 假 | 经理 XYZ | 假 | 特定用户列表
或者使用数组的索引来获取操作:
SELECT j.*
FROM table_name t
CROSS APPLY JSON_TABLE(
t.data,
'$.relist[*]'
COLUMNS (
name VARCHAR2(20) PATH '$.name',
flag VARCHAR2(5) PATH '$.flag',
action1 VARCHAR2(20) PATH '$.action[0]',
action2 VARCHAR2(20) PATH '$.action[1]'
)
) j
哪个输出:
姓名 | 旗帜 | 行动1 | 行动2 :--- | :---- | :-------- | :----------------- XYZ | 假 | 经理 | 特定用户列表
db<>在这里摆弄
推荐阅读
- java - 以布尔方法返回一个字符串
- asp.net - 在 Visual Studio 中安装 Microsoft.Owin.Security.OAuth 时出错
- ruby-on-rails - 生成连续排列时如何提高内存使用率
- javascript - 在带有转义字符(双引号)的对象上使用 json 编码
- notepad++ - 如何在记事本中的多行之间搜索
- python - 从C++程序调用linux终端的录音脚本命令
- c# - C# 中的 ASP.NET Core Web 应用程序和 VB.net 中的 windows 应用程序组合
- python - 如何从 Django 中的 ManyToMany Relation 类中读取对象
- python - 在 postgresql 中存储一个大矩阵并在 python 中操作它
- angular - 代理 http:battuta.medunes.net 在生产中的角度