PostgreSQL中无需手动插小数点的字符串转decimal方法问询
PostgreSQL 无需字符串操作解析字符串为指定小数位的Decimal
可以通过数值转换+除法运算实现需求,无需手动拼接小数点——本质是将输入字符串视为整数,再除以对应10的幂次(示例中是3位小数,所以除以1000):
核心实现代码
-- 处理长度超过3位的字符串 SELECT ('123456789'::bigint) / 1000::decimal; -- 输出:123456.789 -- 处理长度不足3位的字符串 SELECT ('123'::bigint) / 1000::decimal; -- 输出:0.123
异常场景处理
如果需要兼容空字符串或NULL输入,可以用COALESCE和条件判断确保结果合法:
-- 处理空字符串/NULL的情况 SELECT COALESCE(NULLIF(str, '')::bigint / 1000::decimal, 0::decimal) FROM (SELECT '' AS str) t; -- 输出:0.000
内容的提问来源于stack exchange,提问作者cup_of_chino
相关产品推荐
相关产品推荐

