PostgreSQL中参数可为null::jsonb时如何安全获取jsonb_array_length
解决方案
可以利用jsonb_typeof()函数判断JSON值的类型,结合CASE语句实现需求,写法简洁且逻辑清晰:
SELECT CASE jsonb_typeof(items) WHEN 'array' THEN jsonb_array_length(items) ELSE 0 END AS array_length FROM mytable;
说明
jsonb_typeof(items)会返回当前items列值的JSON类型,比如数组返回'array',null标量返回'null',其他标量(如字符串、数字)返回对应类型。- 当类型为数组时,正常调用
jsonb_array_length()获取长度;其他所有情况(包括null标量)直接返回0,避免报错。
对比你原来的写法,这个方案更直观,性能也更优,不需要额外的JSON路径查询或数组构建操作。
内容的提问来源于stack exchange,提问作者grapes
相关产品推荐
相关产品推荐

