在顶级json数组oracle中搜索元素

时间:2018-10-19 21:00:26

标签: sql arrays json oracle oracle12c

我有一个字符串数组,以以下格式存储在oracle列中作为json数组:

let payload = await this.load_data(this.root_dir + '/resources  /payload/' + file_name + ".json")
  • 我必须编写一个查询来检查给定的字符串是否存在于任何行中的任何数组中。在上面的示例中,我想看看是否存在“ xyz”。 json路径应该如何?我知道我可以使用'like'子句,但我认为这不是一个整洁的方法。
  • 为什么从my_table中查询 SELECT JSON_QUERY(my_column,'$ [*]')总是返回null?

1 个答案:

答案 0 :(得分:1)

我做了以下测试,这可能是您要寻找的:

create table t(json_v varchar2(40))

insert into t values('["abc", "xyz"]');
insert into t values('["cde", "fgh"]');
insert into t values('["xyz"]');

SELECT *
from t, json_table(t.json_v, '$[*]' columns (value PATH '$'))
WHERE value = 'xyz'

Output Result 
JSON_V          value 
["abc", "xyz"]  xyz 
["xyz"]         xyz

您的问题二,为什么查询总是返回零,因为您必须包装这些值,请参见JSON_QUERY语法

SELECT JSON_QUERY(json_v, '$[*]' WITH WRAPPER) AS value FROM myTable;