首页/数据/SQL 速查/JSON_VALID 与 JSON_TYPE / jsonb_typeof
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

JSON_VALID 与 JSON_TYPE / jsonb_typeof

校验与识别 JSON 结构:把文本转换/入列前先验证,排查线上数据时看清每个节点的类型。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT JSON_VALID('{"a":1}'), JSON_VALID('{a:1}');  -- 1, 0
SELECT JSON_TYPE(doc->'$.items');    -- 'ARRAY'
SELECT JSON_LENGTH(doc->'$.items');  -- 数组元素个数
SELECT JSON_KEYS(doc);               -- 顶层键数组

PostgreSQL

PostgreSQL
SELECT jsonb_typeof(doc->'items');   -- 'array'(小写)
SELECT jsonb_array_length(doc->'items');
SELECT * FROM t WHERE doc IS JSON;    -- PG 16+ 的 IS JSON 谓词
-- 旧版本:入表前用应用层或 CHECK 约束配合类型转换验证
MySQLJSON_VALID / JSON_TYPE(大写枚举)/ JSON_LENGTH / JSON_KEYS
PostgreSQLjsonb_typeof 返回小写(object/array/string/number/boolean/null)
校验PG 16+ 支持 IS JSON 谓词;无内置非报错校验时靠约束与应用层

易错点

  • 两库类型名大小写不同(MySQL 'OBJECT' vs PG 'object'),跨库比较逻辑里统一转小写
  • JSON_VALID 只判合法性,不做结构校验;业务字段的必填检查要额外用 JSON_CONTAINS_PATH 或 CHECK 约束

数据来源与参考

  • MySQL 8.0 Reference Manual · JSON Functions
  • PostgreSQL Documentation · JSON Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌