You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中bytea文件大小转decimal(16,2)保留两位小数

PostgreSQL中Bytea文件大小转换为Decimal(16,2)格式方案

嘿,我来帮你搞定这个格式转换的问题!针对你需要将计算出的文件大小(MB)保留两位小数并转换为decimal(16,2)格式的需求,PostgreSQL有几种简洁的实现方式,比MS SQL的写法更直接:

核心解决方案

方式1:使用ROUND() + CAST()实现类型转换

这是最直接的写法,先通过ROUND()将结果四舍五入到两位小数,再强制转换为指定的decimal类型:

SELECT CAST(ROUND(length('0x546573742044617461') / 1048576.0, 2) AS DECIMAL(16,2));

执行后你的示例值0.000019073486328125会被转换为0.00,如果是1.446119则会得到1.45,完全符合你的四舍五入需求。

方式2:使用TO_CHAR()格式化输出(如需字符串形式)

如果你需要像MS SQL那样转换为字符串类型,PostgreSQL的TO_CHAR()函数可以更灵活地控制格式:

SELECT TO_CHAR(ROUND(length('0x546573742044617461') / 1048576.0, 2), 'FM99999999999999.99');

这里的FM修饰符会去掉结果中多余的前导空格,确保输出格式干净利落。

重要提醒:Bytea字段的正确字节数获取

注意:如果你的实际场景是查询bytea类型字段的文件大小,不要用length()函数(它计算的是字符长度),应该用octet_length()来获取真实的字节数,比如:

SELECT CAST(ROUND(octet_length(your_bytea_column) / 1048576.0, 2) AS DECIMAL(16,2))
FROM your_table;

这样才能得到准确的文件大小计算结果。

内容的提问来源于stack exchange,提问作者Jagadeesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:33:11