为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:
【CPU】:
【问题描述】*:
我创建一个表其中JSON字段存放的是json数组
我想查找数组中的某个json是否包含key为id value为1的数据
我如何用sql去查询
CREATE TABLE "test_json"
(
"ID" BIGINT IDENTITY(1, 1) NOT NULL ,
"JSON" CLOB,
CHECK("JSON" IS JSON ));
insert into "test_json"("JSON")
VALUES('[{"id":1,"value":"DE11001010"},{"id":2,"value":"addr_now"}]');
insert into "test_json"("JSON")
VALUES('[{"id":1,"value":"DE11001011"},{"id":2,"value":"student"}]');
insert into "test_json"("JSON")
VALUES('[{"id":3,"value":"DE11001012"},{"id":4,"value":"name"}]');
insert into "test_json"("JSON")
VALUES('[{"id":11,"value":"DE11001013"},{"id":12,"value":"class"}]');
不知道是不是你想要的效果,你试试看
SELECT A.ID,A.JSON,B.JSON_ID,B.JSON_VALUE
FROM "test_json" A,
JSON_TABLE(A.JSON
,'$[*]'
COLUMNS(JSON_ID DEC PATH '$.id'
,JSON_VALUE VARCHAR2 PATH '$.value')) B
WHERE B.JSON_ID = 1
试试json_extract
https://eco.dameng.com/document/dm/zh-cn/pm/json.html#18.2.1.9%20json_extract