MySQL JSON_SCHEMA_VALID() 函数使用指南
MySQL JSON_SCHEMA_VALID() 函数根据指定的 JSON 模式验证一个 JSON 文档,并返回 1 表是验证通过或者返回 0 表示验证不通过。
JSON_SCHEMA_VALID() 语法
这里是 MySQL JSON_SCHEMA_VALID() 的语法:
JSON_SCHEMA_VALID(schema, json_doc)
参数
schema- 必需的。一个 JSON 模式。它必须是一个有效的 JSON 对象。
json_doc- 必需的。被验证的 JSON 文档。
返回值
JSON_SCHEMA_VALID() 函数返回 1 或 0; 1 表示 JSON 文档通过了验证, 0 表示 JSON 文档没有通过验证。
如果任何一个参数为 NULL,此函数将返回 NULL。
JSON_SCHEMA_VALID() 示例
本示例展示了如何使用 JSON_SCHEMA_VALID() 函数验证一个 JSON 文档是否符合一个 JSON 模式。
首先,让我们创建一个 JSON 模式:
SET @schema = '{
"id": "http://json-schema.org/geo",
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "A geographical coordinate",
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"y": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": ["x", "y"]
}';
这里,我们创建了 JSON 模式,其中:
-
"type": "object"表示 JSON 文档必须是一个 JSON 对象。 -
"properties"中定义了对象中的成员列表,以及每个成员的约束。这里的定义了两个成员:x- 数字类型,最大值是90,最小值是-90。y- 数字类型,最大值是180,最小值是-180。
-
"required": ["x", "y"]定义了对象中必须有成员x和y。
接着,让我们创建一个 JSON 文档:
SET @json_doc = '{"x": 1, "y": 2}';
然后,让我们验证 JSON 文档是否和 JSON 模式匹配:
SELECT JSON_SCHEMA_VALID(@schema, @json_doc);
+---------------------------------------+
| JSON_SCHEMA_VALID(@schema, @json_doc) |
+---------------------------------------+
| 1 |
+---------------------------------------+这说明 @json_doc 是符合 @schema 定义的。
如果我们改一下 JSON 文档,去掉了对象中的成员 y:
SET @json_doc = '{"x": 1}';
让我们再次验证 JSON 文档是否和 JSON 模式匹配:
SELECT JSON_SCHEMA_VALID(@schema, @json_doc);
+---------------------------------------+
| JSON_SCHEMA_VALID(@schema, @json_doc) |
+---------------------------------------+
| 0 |
+---------------------------------------+这里,因为 JSON 模式中定义了 y 是必须的成员,所以 JSON_SCHEMA_VALID() 函数返回了 0.
除此之外,您还可以将 JSON_SCHEMA_VALID() 用于 JSON 字段的 CHECK 约束上。