💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
- 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一.JSON_CONTAINS
- 1.什么是 JSON_CONTAINS?
- 2.基础语法
- 3.使用示例
- 二.JSON_TABLE
- 1.什么是 JSON_TABLE?
- 2.基本语法
- 3.使用示例
一.JSON_CONTAINS
1.什么是 JSON_CONTAINS?
在 MySQL 中,JSON_CONTAINS()
是一个用于检查 JSON 数据中是否包含指定值或路径的函数。它用于执行 JSON 数据类型的查询和比较操作。
2.基础语法
JSON_CONTAINS()
函数的语法如下:
JSON_CONTAINS(json_doc, value[, path])
其中:
-
json_doc
是要搜索的 JSON 文档。 -
value
是要查找的值。 -
path
是可选参数,用于指定要搜索的路径。如果省略该参数,则在整个 JSON 文档中进行搜索。
函数的返回值是一个布尔值,表示是否找到了匹配的值或路径。
3.使用示例
sql = f"select count(*) from indicator_library where JSON_CONTAINS(synonyms,'\"{indicatorName}\"')"
count = session.execute(text(sql)).scalar()
以下是一些示例用法:
- 在整个 JSON 文档中搜索指定的值:
SELECT JSON_CONTAINS('{"name": "John", "age": 30}', 'John');
这将返回结果为 1,表示 JSON 文档中包含值为 ‘John’ 的元素。
- 在指定路径下搜索指定的值:
SELECT JSON_CONTAINS('{"person": {"name": "John", "age": 30}}', 'John', '$.person.name');
这将返回结果为 1,表示在路径 $.person.name
下找到了值为 ‘John’ 的元素。
- 使用列和参数进行查询:
SELECT * FROM my_table WHERE JSON_CONTAINS(json_data, 'value', '$.path');
这将在名为 my_table
的表中的 json_data
列中搜索具有指定值和路径的 JSON 数据。
请注意,JSON_CONTAINS()
函数还可以与其他函数和操作符一起使用,以进行更复杂的 JSON 查询操作。在执行 JSON 查询之前,请确保使用的 MySQL 版本支持 JSON 数据类型和相关函数。
二.JSON_TABLE
1.什么是 JSON_TABLE?
在 MySQL 中,JSON_TABLE()
函数用于将 JSON 数据解析为关系型表格形式。它允许您从 JSON 对象中提取数据并将其作为表的行进行查询和操作。
2.基本语法
JSON_TABLE()
函数的语法如下:
JSON_TABLE(json_doc, path COLUMNS (column_list))
其中:
-
json_doc
是要解析的 JSON 文档。 -
path
是一个字符串,用于指定要提取数据的路径。 -
COLUMNS (column_list)
是定义生成的表格的列的部分。
列定义部分包含列名和数据类型,您可以根据需要定义多个列。每个列定义由列名和数据类型组成,可以使用 AS
关键字为列指定别名。
3.使用示例
SELECT d.*
FROM dimension d,
JSON_TABLE(
d.enumeration_values,
"$[*]" COLUMNS (
name VARCHAR(255) PATH "$.name",
sql_mapping INT PATH "$.sql_mapping",
equivalent_word JSON PATH "$.equivalent_word"
)
) AS jt
WHERE 1 = 1
and JSON_CONTAINS(jt.equivalent_word, '\"包\"') ;
以下是一个示例用法:
SELECT *
FROM JSON_TABLE('{"employees": [{"name": "John", "age": 30}, {"name": "Jane", "age": 35}]',
'$.employees[*]'
COLUMNS (
name VARCHAR(50) PATH '$.name',
age INT PATH '$.age'
)
) AS jt;
在上面的示例中,我们从 JSON 对象中提取名为 “employees” 的数组,并将其解析为表格形式。表格中的每一行代表一个员工,具有名字和年龄两列。
PATH
子句用于指定数据在 JSON 文档中的路径。'$'
表示整个 JSON 文档,'$.employees[*]'
表示 employees
数组中的所有元素。
在查询中,我们使用 JSON_TABLE()
函数将 JSON 数据解析为表格,并将其作为子查询(使用 AS
关键字指定别名 jt
)。
最后,我们通过选择所有列(SELECT *
)从生成的表格中检索数据。
请注意,JSON_TABLE()
函数在 MySQL 8.0 版本及以上可用。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙