首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >技术 | 提取JSON在不同数据库中处理语法的差异

技术 | 提取JSON在不同数据库中处理语法的差异

作者头像
做数据的二号姬
发布于 2025-04-26 20:29:50
发布于 2025-04-26 20:29:50
1.1K0
举报

原创内容

No.744

技术 | 提取JSON在不同数据库中处理语法的差异

自己mark一下提取JSON在不同数据库中处理语法的差异~

最近又遇到了写SQL提取json中某一个key对应的信息的问题,顺便学习了一下不同数据库之间的语法差异补一下短板,mark在这里。

首先我们假设这么一个案例数据在这里:

代码语言:javascript
复制
CREATE TABLE users(
  id INT PRIMARY KEY,
  info JSON  -- 或类似类型(如 JSONB、NVARCHAR)
);

INSERT INTO users(id, info) VALUES 
(1, '{"name": "Alice", "age": 30}'),
(2, '{"name": "Bob", "age": 25}');

mysql的写法是:

代码语言:javascript
复制
SELECT id, JSON_EXTRACT(info, '$.name') AS name FROM users;
-- 简写
SELECT id, info->>'$.name' AS name FROM users;

pgsql的写法是:

代码语言:javascript
复制
SELECT id, info->'name' AS name_json, info->>'name' AS name_text FROM users;

sqlserver的写法是:

代码语言:javascript
复制
SELECT id, JSON_VALUE(info, '$.name') AS name FROM users;

如果json的格式假为 {"user": {"address": {"city": "Paris"}}},提取paris的时候。

mysql的写法是

代码语言:javascript
复制
SELECT info->>'$.user.address.city' AS city FROM users;

pgsql的写法是

代码语言:javascript
复制
SELECT info->'user'->'address'->>'city' AS city FROM users;

sql server的写法是

代码语言:javascript
复制
SELECT JSON_VALUE(info, '$.user.address.city') AS city FROM users;

总结一下就是:

mark在这里,知识增加了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档