选择出现多次的JSON对象

时间:2018-11-12 12:43:15

标签: sql json oracle oracle11g

我正在尝试编写查询以返回所有火车的etapesSupervision多于一列的火车。

我的表有一个名为DETAIL的列,在此列中,我可以找到火车的JSON。

"nomTrain": "EVOL99",
"compositionCourtLong": "LONG",

"sillons": [{

    "numeroTrain": "EVOL99"
}],
"sillonsV4": [{
"refSillon": "sillons/4289505/2"
}],
"branchesStif": [{
    "data": "49",
    "data": "BP",
    "data": "ORIGINE"
} ],
"etapesSupervision": [{
    "data": "PR/0087-758896-00",
    "data": "PR/0087-758607-BV",
    "superviseur": "1287",
    "uoSuperviseur": "B"
},
{
    "data": "PR/0087-758607-BV",
    "data": "PR/0087-001479-BV",
    "superviseur": "1287",
    "uoSuperviseur": "B"
}],

这是我写的查询:

    select * from course where CODE_LIGNE_COMMERCIALE='B'
     --and ref = 'train/2018-11-12'
    and  instr(count(train.detail,'"etapesSupervision":'))> 1 ;

使用此方法,我只返回一辆etapesSupervision的火车。

问题是DETAIL列是JSON,所以我觉得不能做很多事情。

我也尝试过like,但这也不起作用。

1 个答案:

答案 0 :(得分:0)

谢谢您的评论。 这是有效的查询:

select data,data,data
from train
where 
 length(DETAIL) - length(replace(DETAIL,'uoSuperviseur',null)) > 20  ; 

这样,我的火车只有一名以上的主管。

再次感谢