mysql 解析json

需求背景

设计时数据库中存放的部分原始数据为json,在二次开发过程通过视图来解析出数据

实现

SELECT profile->'$.name' AS user_name
FROM users;

如果是5.7以下

SELECT JSON_EXTRACT(profile, '$.name') AS user_name
FROM users;

如果碰到需要将string转换为double等可以参考

SELECT CONVERT('123.45', DOUBLE);

配合view即可完成需求

### MySQL 解析 JSON 数据 在 MySQL 中,`JSON_EXTRACT` 是一种核心函数,用于从 JSON 字符串中提取指定路径的数据[^1]。该函数支持通过路径表达式(Path Expression)来定位 JSON 文档中的具体部分。例如: ```sql SELECT JSON_EXTRACT('{"key": "value"}', '$.key'); -- 输出: "value" ``` #### `JSON_EXTRACT` 的基本语法 其基本语法如下所示: ```sql JSON_EXTRACT(json_doc, path [, path] ...) ``` - **json_doc**: 表示要解析JSON 文本。 - **path**: 定义了需要提取的具体位置。 如果目标是一个数组项,则可以使用索引来访问具体的元素[^3]。例如: ```sql SELECT JSON_EXTRACT('[10, 20, 30]', '$[1]'); -- 输出: 20 ``` 除了 `JSON_EXTRACT` 外,还有其他一些常用的 JSON 函数可以帮助更灵活地操作 JSON 数据。比如 `JSON_CONTAINS` 可以用来判断某个值是否存在於 JSON 对象或数组之中[^1]。 对于实际应用案例来说,在业务场景下当数据库某列存储的是较大的 JSON 格式的字符串时,直接利用这些内置函数按需取数而非全量加载再做进一步处理能显著提升性能并简化逻辑流程[^2]。 另外值得注意的一点是关于返回类型的转换问题。有时候我们可能希望得到整数值而不是默认情况下被包裹起来作为字符串形式的结果。这时可以通过箭头运算符 (`->>`) 实现自动类型转换[^3]: ```sql SELECT myjson ->> '$.Data.List[0].ID' AS intid FROM ... ``` 综上所述,无论是简单的键值对还是复杂的嵌套结构甚至是列表型数据,借助于MySQL所提供的这一系列针对JSON格式的支持工具都能很好地满足日常开发需求当中涉及到的各种情况下的读写要求。 ```sql -- 示例代码展示如何结合WHERE条件过滤记录以及同时获取多个字段的信息 SELECT id, name, JSON_UNQUOTE(JSON_EXTRACT(details, '$.address')) AS address, CAST(JSON_EXTRACT(details, '$.age') AS UNSIGNED) AS age_in_years FROM users WHERE JSON_EXTRACT(details, '$.status') = '"active"'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值