説明
JSON_EQUAL()関数は、2つのJSON値を比較し、等しい場合にTrueを返します。2つの値が等しくない場合は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であり、典型的なエラーは入力された2つの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