
原创内容
No.744
技术 | 提取JSON在不同数据库中处理语法的差异
自己mark一下提取JSON在不同数据库中处理语法的差异~
最近又遇到了写SQL提取json中某一个key对应的信息的问题,顺便学习了一下不同数据库之间的语法差异补一下短板,mark在这里。
首先我们假设这么一个案例数据在这里:
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的写法是:
SELECT id, JSON_EXTRACT(info, '$.name') AS name FROM users;
-- 简写
SELECT id, info->>'$.name' AS name FROM users;pgsql的写法是:
SELECT id, info->'name' AS name_json, info->>'name' AS name_text FROM users;sqlserver的写法是:
SELECT id, JSON_VALUE(info, '$.name') AS name FROM users;如果json的格式假为 {"user": {"address": {"city": "Paris"}}},提取paris的时候。
mysql的写法是
SELECT info->>'$.user.address.city' AS city FROM users;pgsql的写法是
SELECT info->'user'->'address'->>'city' AS city FROM users;sql server的写法是
SELECT JSON_VALUE(info, '$.user.address.city') AS city FROM users;总结一下就是:

mark在这里,知识增加了!