我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql中JSON字段的值的实现示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql中JSON字段的值的实现示例

我们在查询mysql数据时,查询某个字段的数剧是我们经常接触的,直接使用sql语句或者更方便的直接使用数据库的orm语句查询。但是如果需要查询某个json字段里面的某些数据,orm模型可能都无法达到效果,还不如直接使用sql语句进行查询来的直观。下面总结了一些sql语句查询json字段里面的值。

mysql版本是5.7,使用fastapi和tortoise-orm接口的方式返回查询到的响应结果。

下面创建了一个用于测试的数据表。包括主键id,varchar类型的name,json类型的code(数组)和info(映射)。

例如:code数据结构:["A1b2C3d4E5", "F6g7H8i9J0", "K1l2M3n4O5", "P6q7R8s9T0", "U1v2W3x4Y5", "Z6a7B8c9D0", "E1F2g3H4i5", "J6k7L8m9N0", "O1P2q3R4s5", "T6U7v8W9x0", "Y1Z2a3B4c5", "D6E7F8g9H0", "I1j2K3l4M5", "N6O7P8q9R0", "S1T2U3v4W5", "X6Y7Z8a9B0"]
info数据结构:{"age": 30, "city": "New York", "name": "Alice", "contact": {"email": "alice@example.com", "phone": "123-456-7890"}, "education": "Bachelor"}

Mysql中JSON字段的值的实现示例

 1、查询info中age=30的数据

@router.get('/jsontest/{keyword}/{value}', description="获取mysql的json值测试")
async def search_(keyword: str, value: str):
    query = f"SELECT * FROM jsontest WHERE JSON_CONTAINS(info->'$.{keyword}','{value}')"
    conn = tortoise.Tortoise.get_connection("default")
    try:
        _, index_result = await conn.execute_query(query)
    except Exception as ex:
        error_msg = f"error:{ex.__class__.__name__}-{str(ex)}"
        log_it(error_msg, level=logging.ERROR)
        return JSONResponse(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, content=error_msg)
    finally:
        await conn.close()
    return JSONResponse(
        status_code=status.HTTP_200_OK,
        content=index_result
    )
SELECT * FROM jsontest WHERE JSON_CONTAINS(info->'$.age','30')

查询结果

Mysql中JSON字段的值的实现示例

 为了避免重复代码冗余,后续的查询直接写sql语句了。可以通过更改api接口传参,构造query语句达到一样的效果。

2、查询code数组中包含"ANOPQRSTU8"的数据

SELECT * FROM jsontest WHERE JSON_CONTAINS(code,'"ANOPQRSTU8"')

3、查询info中city是New York并且code中包含AWXYZ01239的数据

SELECT * FROM jsontest WHERE JSON_CONTAINS(info->'$.city','"New York"') AND JSON_CONTAINS(code,'"AWXYZ01239"')

4、查询info中包含city和age的数据,指定的是"one"表示只需包含任何一个路径即可,"all"表示需要包含所有指定路径

SELECT * FROM jsontest WHERE JSON_CONTAINS_PATH(info, 'one', '$.city', '$.age');
SELECT * FROM jsontest WHERE JSON_CONTAINS_PATH(info, 'all', '$.city', '$.contact.email');

5、查询Alice info数据中的city,age,以及contact里面的email。下面两种效果是一样的,只不过使用JSON_EXTRACT返回的是一个字段,而->这种方法返回的是拆分开的字段

SELECT JSON_EXTRACT(info, '$.city','$.age','$.contact.email') AS name FROM jsontest WHERE name = 'Alice';
SELECT info->'$.city',info->'$.age',info->'$.contact.email' FROM jsontest WHERE name = 'Alice'

6、查询Alice code数组中前三个数据。数组类型的json只能通过索引获取值,如果想获取全部则改成'$[*]'即可。下面两种效果是一样的,只不过使用JSON_EXTRACT返回的是一个字段,而->这种方法返回的是拆分开的字段

SELECT JSON_EXTRACT(code, '$[0]','$[1]','$[2]') AS res FROM jsontest WHERE name = 'Alice';
SELECT code->'$[0]',code->'$[1]',code->'$[2]' FROM jsontest WHERE name = 'Alice';
# 获取数组里面的所有数据
SELECT JSON_EXTRACT(code, '$[*]') AS res FROM jsontest WHERE name = 'Alice';
SELECT code->'$[*]'  FROM jsontest WHERE name = 'Alice';

7、使用JSON_UNQUOTE去除 JSON 字符串的引号。上面返回的数据带有原始json的引号,这一点有时对结果处理特别不友好,可以使用JSON_UNQUOTE进行处理

SELECT JSON_UNQUOTE(JSON_EXTRACT(info, '$.contact.email')) AS email FROM jsontest WHERE name = 'Alice';

8、提取info映射里面的所有key,也可以查询嵌套字典里面的所有key

SELECT JSON_KEYS(info) AS k FROM jsontest WHERE name = 'Alice';
#查询嵌套字典的key
SELECT JSON_KEYS(info->'$.contact') AS k FROM jsontest WHERE name = 'Alice';

9、获取code数组和字典info的长度

SELECT JSON_LENGTH(code, '$') as count  FROM jsontest WHERE name = 'Alice'
SELECT JSON_LENGTH(info, '$') as count  FROM jsontest WHERE name = 'Alice'
# 获取嵌套字典的长度
SELECT JSON_LENGTH(info->'$.contact') as count  FROM jsontest WHERE name = 'Alice'

10、搜索数组和字典里面的值

# 搜索字典中的value,one_or_all: 指定搜索所有匹配项还是仅找到的第一个匹配项
SELECT JSON_SEARCH(info, 'all', "New York") AS search_result FROM jsontest
# 搜索数组中的值,%A%模糊搜索含有A的数据
SELECT JSON_SEARCH(code, 'all', '%A%') AS search_result FROM jsontest

到此这篇关于Mysql中JSON字段的值的实现示例的文章就介绍到这了,更多相关Mysql JSON字段值内容请搜索编程客栈(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.lsjlt.com)!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql中JSON字段的值的实现示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql中JSON字段的值的实现示例

我们在查询mysql数据时,查询某个字段的数剧是我们经常接触的,直接使用sql语句或者更方便的直接使用数据库的orm语句查询。但是如果需要查询某个json字段里面的某些数据,orm模型可能都无法达到效果,还不如直接使用sql语句进行查询来的
Mysql中JSON字段的值的实现示例
2024-09-11

MySQL中字段的实际长度的实现示例代码

目录1. 对于字符类型字段2. 对于二进制类型字段总结在mysql中,字段的实际长度(即存储数据的实际字节数)可能因数据类型和存储的具体内容而异。对于字符类型(如CHAR, VARCHAR, TEXT等)字段,实际长度取决于存储的字符串长度
MySQL中字段的实际长度的实现示例代码
2024-09-12

MySQL中查询json格式的字段实例详解

工作开发过程遇到一个需求:需要动态存储客户的姓名、手机号码、身份证、证件类型,意思是可能前端会传一个人或二个人或者三个人的信息是动态的不固定人数的四个字段(姓名、手机号码、身份证、证件类型)。 前端页面如下:我是使用List来接收前端传过来
2022-05-14

mysql中json类型字段的基本用法实例

目录前言基本环境jsON类型字段常用操作插入JSON类型数据查询JSON类型数据更新JSON类型数据中的特定字段匹配JSON类型数据中的特定字段结语前言mysql从5.7.8版本开始原生支持了JSON类型数据,同时可以对JSON类型字段中
2022-08-12

mysql 字段括号拼接的实现示例

目录1. 概述2. 步骤详解步骤1:连接到mysql数据库步骤2:构造SQL查询语句步骤3:执行SQL查询语句步骤4:处理查询结果步骤5:关闭数据库连接总结1. 概述在使用MySQL进行数据查询时,有时候需要对字段进行拼接,并用括号包围起
mysql 字段括号拼接的实现示例
2024-01-29

sql怎么取json中的字段值

从JSON数据中提取特定字段值的方法包括使用SQL的JSON_EXTRACT()函数和->操作符。JSON_EXTRACT()函数通过指定JSON路径直接提取值,而->操作符允许导航嵌套的JSON结构。处理嵌套数据时,可以使用点号或->访问子级值。还提供了其他函数和操作符,如JSON_VALUE()和JSON_QUERY(),用于更复杂的提取任务。
sql怎么取json中的字段值
2024-04-11

sql如何取json中的字段值

从JSON数据中提取字段值的方法:JSON_VALUE():指定JSON路径提取特定字段。JSON_EXTRACT():灵活的路径表达式,支持通配符。JSON_UNQUOTE():去除JSON字符串中的引号。JSON_ARRAY():将JSON字符串转换为数组,提取元素。JSON_OBJECT():从JSON数据中创建新的JSON对象。嵌套JSON函数:提取嵌套JSON数据中的特定字段。选择方法时考虑JSON结构和需求。对于简单JSON使用JSON_VALUE(),对于嵌套数据使用JSON_EXTRACT
sql如何取json中的字段值
2024-04-11

MySQL多个字段拼接去重的实现示例

目录什么是多个字段拼接去重使用mysql进行多个字段拼接去重创建测试http://www.lsjlt.com表使用GROUP_CONCAT函数进行拼接使用CONCAT_WS函数进行拼接去除重复的拼接结果总结在MySQL中,我们经常会遇到需要
MySQL多个字段拼接去重的实现示例
2024-01-29

MySQL插入时间戳字段的值实现

目录1. 创建表2. 插入当前时间戳3. 插入指定时间戳4. 插入NULL值应用示例1. 记录用户登录时间2. 记录订单创建时间3. 记录文章发布时间1. 使用方法2. 时区问题3. 其他用途4. 支持版本结论mysql是一种常用的关系型数
MySQL插入时间戳字段的值实现
2024-09-19

MySQL中使用JSON存储数据的实现示例

目录1.概述:2.使用:3.查询:4.修改5.删除6.排序7.索引8.实现原理:参考资料:1.概述:mysql从5.7版本开始引入了对jsON数据类型的原生支持。这个增强功能使开发人员能够直接在数据库中存储、操作和查询JSON数据。My
2023-09-21

MySQL中json字段的操作方法

MySQL5.7.8中引入了json字段,这种类型的字段使用的频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段的操作方法: 还是从例子看起:mysql> create table test1(id in
2022-05-31

sql如何获取json串中字段的值

在SQL中获取JSON字符串中字段值的方法包括:JSON_VALUE()函数:提取特定路径下的字段值。JSON_EXTRACT()函数:提取嵌套对象的字段值。JSON_QUERY()函数:使用XPath语法查询JSON数据。CASE表达式:根据JSON路径匹配键来提取值。正则表达式:从JSON字符串中提取字段值,适用于嵌套或动态键。
sql如何获取json串中字段的值
2024-04-11

sql如何获取json串中字段的值

在SQL中,可以使用JSON函数来获取JSON串中字段的值。以下是一些常用的JSON函数:1. JSON_VALUE:用于提取JSON串中的单个值。语法:JSON_VALUE(json_column, '$.key')示例:SELECT J
2023-08-25

MybatisPlus字段类型转换的实现示例

本文主要介绍了MybatisPlus如何完成字段类型转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-15

MYSQL实现将B表中的字段值到更新A表中

根据A表中的id字段和B表中的id字段,将B表中name字段和price字段值更新到A表中name字段和price字段UPDATE A, BSET A.name = B.name, A.price = B.priceWHERE A.id =
MYSQL实现将B表中的字段值到更新A表中
2014-07-29

mysql中取出json字段的小技巧

目录mysql取出json字段技巧mysql中使用函数JSON_EXTRACT()spark sql中使用get_jsoLfCBTJn_object()mysql取json,在不知道key情况下,取他的value详细值mysql取出json
2022-07-05

编程热搜

目录