説明
この関数は、1つまたは複数の指定されたパスがターゲットJSONドキュメントに含まれているかどうかを検証します。ターゲットJSONドキュメントに含まれている場合、この関数は1を返し、そうでない場合は0を返します。
構文
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)
説明
パラメータ json_doc はJSONドキュメントを指定するために使用され、path はパスパラメータです。いずれかのパラメータが NULL の場合、NULL を返します。
one_or_all パラメータには、次の値を指定できます。
'one':ドキュメントに少なくとも1つのパスが存在する場合は1を返し、そうでない場合は0を返します。'all':ドキュメントにすべてのパスが存在する場合は1を返し、そうでない場合は0を返します。
次の場合はエラーが発生します。
json_docパラメータが有効なJSONドキュメントではありません。任意の
pathパラメータが有効なパス式ではありません。one_or_allパラメータが'one'または'all'ではありません。
例
obclient> SET @jn = '{"a": 1, "b": 2, "c": {"d": 4}}';
Query OK, 0 rows affected
obclient> SELECT JSON_CONTAINS_PATH(@jn, 'one', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e') |
+---------------------------------------------+
| 1 |
+---------------------------------------------+
1 row in set
obclient> SELECT JSON_CONTAINS_PATH(@jn, 'all', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'all', '$.a', '$.e') |
+---------------------------------------------+
| 0 |
+---------------------------------------------+
1 row in set
obclient> SELECT JSON_CONTAINS_PATH(@jn, 'one', '$.c.d');
+----------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.c.d') |
+----------------------------------------+
| 1 |
+----------------------------------------+
1 row in set
obclient> SELECT JSON_CONTAINS_PATH(@jn, 'one', '$.a.d');
+----------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a.d') |
+----------------------------------------+
| 0 |
+----------------------------------------+
1 row in set