PostgreSQL 14.3:JSONB字符串直接转整数失败,求直接转换方法
PostgreSQL jsonb字符串转整数的解决方案
核心原因
->操作符返回的是jsonb类型,即便存储的是"1234"这种字符串形式的数字,它本质仍是jsonb对象。PostgreSQL的类型系统不支持直接将jsonb字符串强制转换为integer,必须先转为text类型再做整数转换。
可选写法(本质都是先转文本再转整数)
- 你当前用的
(column_name ->> json_key_name)::integer已经是最简洁的写法之一,->>就是PostgreSQL专门提供的、直接提取jsonb字段文本值的操作符。 - 如果你偏好链式转换的写法,也可以写成:
(column_name -> json_key_name)::text::integer - 若需要处理带格式的数字字符串(比如含千分符),可以用
to_number函数:to_number(column_name ->> json_key_name, '9999')
结论
不存在完全跳过文本转换的"直接转整数"方法,因为jsonb类型的字符串无法直接映射到PostgreSQL的integer类型。你当前使用的->>+::integer就是最优的简洁实现方式。
内容的提问来源于stack exchange,提问作者Georg Heiler
相关产品推荐
相关产品推荐

