JSON_CONTAINS()¶
简介¶
判断给定的val是否包含在目标JSON中,或者包含在指定路径的目标JSON中,TRUE表示存在,FALSE表示不存在
语法¶
JSON_CONTAINS(json_doc, val, [path])
说明¶
1. 如果任何参数为NULL,或者在指定的路径下没有JSON数据,就会返回NULL。
2. 如果json_doc参数不是有效的JSON,或者任何路径参数不是有效的路径表达式,或者路径中包含*或**通配符,会发生错误。
3. 当且仅当json_doc的元素与val中的元素具有可比性且相等时,返回TRUE,否则返回FALSE。
4. 当json_doc为数组,且val为数组时,json_doc的元素包含val中的所有元素,才会返回TRUE,否则返回FALSE。
5. 当json_doc为数组,且val为非数组时,json_doc的元素包含val,返回TRUE,否则返回FALSE。
6. 当val为对象时,json_doc中的对象需要和val一一对应,才会返回TRUE,否则返回FALSE。
示例¶
-- 传入参数为NULL
SELECT JSON_CONTAINS('[1,2,3]',NULL) FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
null |
总数目:1
SELECT JSON_CONTAINS(NULL,'[1,2]') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
null |
总数目:1
SELECT JSON_CONTAINS('[1,2,3]','[1,2]',NULL) FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
null |
总数目:1
-- 指定路径下没有JSON数据
SELECT JSON_CONTAINS('[1,2,3]','[1,2]','$[10]') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
null |
总数目:1
SELECT JSON_CONTAINS('{"a":"b","c":"d"}','[1,2]','$.f') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
null |
总数目:1
-- json_doc为数组,且val为数组
SELECT JSON_CONTAINS('[1,2,3]','[1,2]') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
true |
总数目:1
SELECT JSON_CONTAINS('[1,2,3]','[1,4]') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
false |
总数目:1
SELECT JSON_CONTAINS('[1,2,3]','[1,2]','$[1]') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
false |
总数目:1
-- json_doc为数组,且val为非数组
SELECT JSON_CONTAINS('[1,2,3]','{"a":"b"}') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
false |
总数目:1
SELECT JSON_CONTAINS('[1,{"a":"b"},3]','{"a":"b"}') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
true |
总数目:1
-- json_doc为对象,且val为对象
SELECT JSON_CONTAINS('{"a":"b"}','{"a":"b"}') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
true |
总数目:1
SELECT JSON_CONTAINS('{"a":"b"}','{"a":"c"}') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
false |
总数目:1
SELECT JSON_CONTAINS('{"a":{"a":"b"}}','{"a":"b"}') FROM DUAL;
JSON_CONTAINS(boolean) |
----------------------------
false |
总数目:1