在顶级 json 数组预言机中搜索元素



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

["abc", "xyz"]
["cde", "fgh"]
["xyz"]
  • 我必须编写一个查询来检查给定字符串是否存在于任何行的任何数组中。在上面的例子中,我想看看"xyz"是否存在。json 路径应该如何?我知道我可以使用"喜欢"子句,但我认为这不是一种巧妙的方法。
  • 为什么查询SELECT JSON_QUERY(my_column, '$[*]'( FROM my_table总是返回 null?

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

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;

最新更新