JSON_OVERLAPS()

JSON_OVERLAPS(a, b) 比较两个 JSON 文档,当它们至少有一个共同的键值对或数组元素时返回 1,遵循 MySQL 的顶层重叠语义。

描述

JSON_OVERLAPS(a, b) 在两个 JSON 文档重叠时返回 1,否则返回 0

  • 两个数组如果至少有一个共同元素则重叠。

  • 两个对象如果至少有一个共同的键值对则重叠。

  • 标量如果与数组的某个元素相等,则与该数组重叠;否则两个标量仅在相等时重叠。

原生的 SQL 标量(如裸整数或布尔值)不是 JSON 文档,会在绑定阶段被拒绝;请将其作为 JSON 字符串传入或进行类型转换。

语法

JSON_OVERLAPS(a, b)

参数

参数

说明

a

第一个 JSON 文档(或兼容 JSON 的字符串)。

b

第二个 JSON 文档(或兼容 JSON 的字符串)。

返回值

如果两个文档重叠则返回 1,否则返回 0。如果任一参数为 NULL,则返回 NULL

示例

DROP DATABASE IF EXISTS json_overlaps_demo;
CREATE DATABASE json_overlaps_demo;
USE json_overlaps_demo;

SELECT JSON_OVERLAPS('[1,3,5,7]', '[2,5,7]') AS overlap;
SELECT JSON_OVERLAPS('{"a":1,"d":10}', '{"d":10,"x":1}') AS obj_overlap;
SELECT JSON_OVERLAPS('true', 'false') AS scalar_overlap;

DROP DATABASE json_overlaps_demo;