Поисковый массив Oracle в пределах значений JSON? - PullRequest
0 голосов
/ 22 марта 2019

В базе данных Oracle в виде JSON хранится следующее:

{
   value: [1,2,3]
}

Значение может быть любого типа (строки, целые числа или массивы).Как бы я запросить, если тип является массивом и содержит ли оно определенное значение?

В псевдокоде:

SELECT * FROM TABLE WHERE COLUMN_NAME.value CONTAINS 2

Я могу видеть, как запросить строки с использованием Oracleтакие функции, как json_query, но не могут увидеть, как выполнить этот конкретный тип запроса, не выбрав все данные и не выполнив поиск на клиенте.

1 Ответ

1 голос
/ 23 марта 2019

Вы можете использовать JSON_TABLE в FROM, определяя столбцы, а затем использовать его в предложении where для фильтрации строк.

--Test data
with t (id,j)
as
( select 1, TO_CLOB(
  '{
     value : [1,2,3]
   }') FROM DUAL
 ) 
--Test data ends--
select t.id,tbl.val FROM t cross join 
    json_table(j,'$.value[*]' columns (val varchar2(100) path '$') ) as tbl
where tbl.val = 2


    ID      VAL 
  ------  -------
     1      2            
...