JSON_CONTAINS( target , candidate [, path ])

通过返回1或0指示给定的 candidate JSON文档是否包含在 target JSON文档中,或者(如果提供了 path 参数) 指示是否 在目标内的特定路径上找到候选对象。 返回 NULL 是否有任何参数为 NULL ,或者path参数没有标识目标文档的一部分。 如果发生错误 target candidate 不是有效的JSON文档,或者如果 path 参数不是一个有效的路径表达式或包含一个 * ** 通配符。

要仅检查路径中是否存在任何数据,请 JSON_CONTAINS_PATH() 改用。

以下规则定义了围堵:

当且仅当候选标量可比较且相等时,才包含在目标标量中。 如果两个标量值具有相同的 JSON_TYPE() 类型, 则它们是可比较的,但 类型的值 INTEGER DECIMAL 也可彼此比较。

当且仅当候选对象中的每个元素都包含在目标的某个元素中时,候选数组才包含在目标数组中。

当且仅当候选非数组包含在目标的某些元素中时,该候选非数组才包含在目标数组中。

当且仅当候选对象中的每个关键字在目标中存在一个具有相同名称的关键字并且与候选关键字相关联的值包含在与目标关键字相关联的值中时,候选对象才包含在目标对象中。

否则,候选值将不包含在目标文档中。

mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
mysql> SET @j2 = '1';
mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.a') |
+-------------------------------+
|                             1 |
+-------------------------------+