JSON_CONTAINS
📄字数 526
👁️阅读量 加载中...
功能描述
搜索json_doc
是否存在于json_doc_target
中,当path
存在时,则判断是否存在于指定的路径下。
语法格式
sql
JSON_CONTAINS( json_doc_target, json_doc[, path] )
输入参数
json_doc_target
:JSON目标文本,JSON类型或字符类型。json_doc
:JSON比对文本,JSON类型或字符类型。path
:(可选)JSON路径表达式,字符类型。
输出结果
INTEGER类型。任意参数为NULL
时,输出结果为NULL
。
提示
- 当对比值为数组时,数组元素都包含在目标文本的某个元素中时,返回1。
- 当对比值为非数组时,非数组值包含在目标文本中时,返回1。
- 当对比值为对象时,对象的键值对在目标中存在有相同的键名和值,返回1。
示例
sql
-- 不指定路径
SQL> SELECT JSON_CONTAINS(null, '1'),
JSON_CONTAINS('[1, 2, {"x": 3}]', '1'),
JSON_CONTAINS('[1, 2, {"x": 3}]', '{"x": 3}'),
JSON_CONTAINS('[1, 2, {"x": 3}]', '3'),
JSON_CONTAINS('{"x": 3}', '"x"');
+--------+-------+-------+-------+-------+
| EXPR1 | EXPR2 | EXPR3 | EXPR4 | EXPR5 |
+--------+-------+-------+-------+-------+
| <NULL> | 1 | 1 | 0 | 0 |
+--------+-------+-------+-------+-------+
-- 指定路径
SQL> SELECT JSON_CONTAINS('[1, 2, [3, 4]]', '2', '$[2]'),
JSON_CONTAINS('[1, 2, [3, 4]]', '2', '$[1]');
+-------+-------+
| EXPR1 | EXPR2 |
+-------+-------+
| 0 | 1 |
+-------+-------+