微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mysql:获取json数组长度并忽略空值

如何解决Mysql:获取json数组长度并忽略空值

我有这个查询

select json_length(data->"$.row.*.code") as count from hospitalization_history where id = 238

count 中的结果是 8,因为 data->"$.row.*.code" 返回 ["J00.00","V01.00","G00.00",null,null];

如何获取 json 数组中非空值的数量

解决方法

来自commentAkina

将数组解析为行集,然后计算非空值。见https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=dd0a37bb25d526f029a7a82c6a1fe0cc

小提琴中的 SQL 是:

WITH cte AS (SELECT '["J00.00","V01.00","G00.00",null,null]' jstr)
SELECT COUNT(val)
FROM cte
JOIN JSON_TABLE(cte.jstr,'$[*]' COLUMNS (val VARCHAR(255) PATH '$')) jtable

结果

COUNT(val)
3
,

最后,为 MySQL 8+ 找到了这个解决方案:

SELECT JSON_LENGTH(
    JSON_SEARCH('["J00.00",null]','all','%')
) AS count;

Try it here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。