首批通过分布式安全可靠测评,为关键业务系统打造
JSON_EQUAL
更新时间:2026-04-05 17:25:59
描述
JSON_EQUAL() 函数用于比较两个 JSON 值,如果相等则返回 Ture。如果两个值不相等,则返回 False。输入值必须是有效的 JSON 数据。比较忽略空格和对象成员顺序。例如,如果 JSON 对象具有相同的成员,则无论它们的顺序如何,都是相等的。
此外,IS JSON和 IS NOT JSON在 SQL 语句中作为 SQL 条件也用以校验表达式结果是否是合法的 JSON 数据格式。详细信息请参见 JSON 数据类型列的创建。
语法
json_equal(expr,
expr
[TRUE|FALSE|ERROR ON ERROR]);
语法说明
ERROR 子句 默认是 FALSE ON ERROR,典型的错误是输入的两个 JSON 不是合法的 JSON 数据。
示例
# WHEN CASE 中作为 SQL 条件使用 JSON_EQUAL() 函数
obclient> SELECT CASE
WHEN JSON_EQUAL (
'{"comparesAttributes":"and values"}', '{"inTwoJSONDocuments": "for equality"}'
) THEN 'THE SAME' ELSE 'DIFFERENT'
END JSON_COMPARE
FROM DUAL;
+--------------+
| JSON_COMPARE |
+--------------+
| DIFFERENT |
+--------------+
1 row in set
# 相同的输入
obclient> SELECT 1 FROM DUAL WHERE JSON_EQUAL('[1,]', '[1]' FALSE ON ERROR);
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set
obclient> SELECT 1 FROM DUAL WHERE JSON_EQUAL('[1,]', '[1' TRUE ON ERROR);
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set
# 使用 ERROR 子句 FALSE ON ERROR
obclient> SELECT 1 FROM DUAL WHERE JSON_EQUAL('[1,]', '[1' FALSE ON ERROR);
Empty set
# 使用 ERROR 子句 ERROR ON ERROR
obclient> SELECT 1 FROM DUAL WHERE JSON_EQUAL('[1,]', '[1' error on error);
OBE-40441: JSON syntax error