MariaDB JSON_CONTAINS() 函数的基础用法与实例
MariaDB JSON_CONTAINS()
函数是一个用于检查 JSON 文档中是否包含指定的值或子文档的函数。
MariaDB JSON_CONTAINS()
函数是一个用于检查 JSON 文档中是否包含指定的值或子文档的函数。它可以用于查询或过滤包含 JSON 数据的表或列。
语法
MariaDB JSON_CONTAINS()
函数的语法如下:
JSON_CONTAINS(json_doc, val[, path])
其中:
json_doc
是一个有效的 JSON 文档,可以是一个字面值,一个变量,或者一个列名。val
是一个要检查的值或子文档,可以是一个字面值,一个变量,或者一个列名。path
是一个可选的 JSON 路径表达式,用于指定要检查的位置。如果省略,则默认为根路径 ('$'
)。路径表达式的语法参见 JSON Path Expressions。- 函数的返回值是一个布尔值,如果
json_doc
中包含val
,返回1
,否则返回0
。
实例
检查 JSON 文档中是否包含指定的值
假设我们有一个 JSON 文档,如下所示:
{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"]
}
我们可以使用 MariaDB JSON_CONTAINS()
函数来检查这个 JSON 文档中是否包含某个值,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"]
}',
'"Alice"'
);
输出结果为:
0
这表示 JSON 文档中不包含 "Alice"
这个值,因为它是 name
这个键的值,不是一个独立的值。如果要从中找到这个值,需要指定路径 '$.name'
,如下面的语句:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"]
}',
'"Alice"',
'$.name'
);
输出结果为:
1
检查 JSON 文档中是否包含指定的子文档
我们可以使用 MariaDB JSON_CONTAINS()
函数来检查 JSON 文档中是否包含指定的子文档,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"],
"address": {
"city": "New York",
"country": "USA"
}
}',
'{"city": "New York"}',
'$.address'
);
输出结果为:
1
这表示 JSON 文档中的 $.address
路径下包含 {"city": "New York"}
这个子文档,即 address
对象的 city
属性。
如果我们检查一个不存在的子文档,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"],
"address": {
"city": "New York",
"country": "USA"
}
}',
'{"city": "London"}',
'$.address'
);
输出结果为:
0
这表示 JSON 文档中的 $.address
路径下不包含 {"city": "London"}
这个子文档。
检查 JSON 文档中是否包含指定的数组元素
我们可以使用 MariaDB JSON_CONTAINS()
函数来检查 JSON 文档中是否包含指定的数组元素,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"]
}',
'"reading"',
'$.hobbies'
);
输出结果为:
1
这表示 JSON 文档中的 $.hobbies
路径下包含 "reading"
这个数组元素,即 hobbies
数组的第一个元素。
如果我们检查一个不存在的数组元素,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"]
}',
'"dancing"',
'$.hobbies'
);
输出结果为:
0
这表示 JSON 文档中的 $.hobbies
路径下不包含 "dancing"
这个数组元素。
检查 JSON 文档中是否包含指定的嵌套值
我们可以使用 MariaDB JSON_CONTAINS()
函数来检查 JSON 文档中是否包含指定的嵌套值,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"],
"address": {
"city": "New York",
"country": "USA"
}
}',
'"USA"',
'$.address.country'
);
输出结果为:
1
这表示 JSON 文档中的 $.address.country
路径下包含 "USA"
这个值,即 address
对象的 country
属性的值。
如果我们检查一个不存在的嵌套值,例如:
SELECT JSON_CONTAINS(
'{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "swimming", "coding"],
"address": {
"city": "New York",
"country": "USA"
}
}',
'"UK"',
'$.address.country'
);
输出结果为:
0
这表示 JSON 文档中的 $.address.country
路径下不包含 "UK"
这个值。
相关函数
除了 MariaDB JSON_CONTAINS()
函数外,还有一些与 JSON 值相关的函数,如下:
- MariaDB
JSON_CONTAINS_PATH()
函数:用于检查 JSON 文档中是否存在指定路径。 - MariaDB
JSON_EXTRACT()
函数:用于从 JSON 文档中提取指定路径的值。 - MariaDB
JSON_SEARCH()
函数:用于在 JSON 文档中搜索指定的值,并返回其路径。 - MariaDB
JSON_TYPE()
函数:用于返回 JSON 文档中指定路径的值的类型
结论
MariaDB JSON_CONTAINS()
函数是一个用于检查 JSON 文档中是否包含指定的值或子文档的函数。它可以用于查询或过滤包含 JSON 数据的表或列。
在本文中,我们介绍了 MariaDB JSON_CONTAINS()
函数的语法,参数,以及一些基础的用法实例。我们学习了如何使用 MariaDB JSON_CONTAINS()
函数来检查 JSON 文档中是否包含指定的值,子文档,数组元素,通配符值,或嵌套值,以及如何根据不同的需求来指定路径表达式。我们还介绍了一些与 JSON 值相关的函数,以及它们的作用。