MariaDB中JSON_QUERY查询JSON字段返回NULL,求问题原因
MariaDB中JSON_QUERY返回NULL的原因及解决方法
你混淆了JSON_VALUE和JSON_QUERY的适用场景,这是导致结果不符合预期的核心原因:
两个函数的核心区别
JSON_VALUE:专门用于从JSON文档中提取标量值(字符串、数字、布尔值、null),返回对应SQL类型的数据(比如字符串类型的1,不带JSON引号)。JSON_QUERY:仅用于提取JSON对象或数组这类复合JSON结构,返回JSON格式的字符串。如果目标路径指向的是标量值,它会直接返回NULL——这就是你看到的结果。
解决方法
场景1:获取SQL类型的标量值
继续使用JSON_VALUE即可,这也是最常用的场景:
SELECT JSON_VALUE(j, '$.a') AS a FROM t;
执行结果:
+------+ | a | +------+ | 1 | | 2 | +------+
场景2:获取带JSON引号的字符串(匹配你的预期结果)
如果需要返回带双引号的JSON格式字符串,可以给JSON_QUERY添加WITH WRAPPER修饰符,它会把标量值包装成合法的JSON字符串返回:
SELECT JSON_QUERY(j, '$.a' WITH WRAPPER) AS a FROM t;
执行结果:
+------+ | a | +------+ | "1" | | "2" | +------+
内容的提问来源于stack exchange,提问作者chris01
相关产品推荐
相关产品推荐

