如何让pg_size_pretty按GB/MB混合格式显示带两位小数的计算列
解决方案
可以通过CASE条件判断结合数值计算和字符串拼接,实现自定义的存储大小格式输出,替代pg_size_pretty的默认行为:
SELECT CASE -- 当总和超过或等于1000MB时,转换为GB并保留两位小数 WHEN SUM(thumbdrive_size) >= 1000 THEN ROUND(SUM(thumbdrive_size) / 1024, 2) || ' gig' -- 其余情况保持MB格式,保留两位小数 ELSE ROUND(SUM(thumbdrive_size), 2) || ' MB' END AS formatted_drive_size FROM your_table_name;
关键说明:
- 若
thumbdrive_size字段单位是字节而非MB,需先将总和转换为MB再判断,示例调整如下:SELECT CASE WHEN SUM(thumbdrive_size) / (1024 * 1024) >= 1000 THEN ROUND(SUM(thumbdrive_size) / (1024 * 1024 * 1024), 2) || ' gig' ELSE ROUND(SUM(thumbdrive_size) / (1024 * 1024), 2) || ' MB' END AS formatted_drive_size FROM your_table_name; - 如果业务需求是按1000进制(而非存储行业常用的1024进制)转换单位,只需将公式中的
1024替换为1000即可。 ROUND函数确保数值保留两位小数,字符串拼接符||用于将数值与单位组合成最终显示文本。
内容的提问来源于stack exchange,提问作者user8272537
相关产品推荐
相关产品推荐

