如何将SQL中COALESCE函数返回结果格式化为带千分位分隔符的整数
SQL数值格式化(千分位整数)调整方案
你可以直接使用数据库内置的格式化函数包裹整体求和表达式,即可实现将计算结果转换为带千分位分隔符的整数效果,不同主流数据库的实现语法如下:
- MySQL/MariaDB 环境
使用FORMAT()函数,第二个参数设置为0即可同时实现取整、添加千分位分隔符的效果,调整后语句如下:
SELECT FORMAT( (COALESCE((SELECT SUM(`invoices`.`paid_amount`) FROM `invoices` WHERE DATE(`invoices`.`date`)=CURDATE()),0) + COALESCE((SELECT SUM(`other_incomes`.`other_income_amount`) FROM `other_incomes` WHERE DATE(`other_incomes`.`date`)=CURDATE()),0)), 0) AS total FROM ....
注意:该函数返回结果为字符串类型,若后续需要对该字段做数值运算,需先完成类型转换。
- PostgreSQL 环境
使用TO_CHAR()函数,指定格式掩码'999G999G999'(可根据数值最大长度调整9的数量,G代表千分位分隔符)即可:
SELECT TO_CHAR( (COALESCE((SELECT SUM(`invoices`.`paid_amount`) FROM `invoices` WHERE DATE(`invoices`.`date`)=CURDATE()),0) + COALESCE((SELECT SUM(`other_incomes`.`other_income_amount`) FROM `other_incomes` WHERE DATE(`other_incomes`.`date`)=CURDATE()),0)), '999G999G999') AS total FROM ....
- SQL Server 环境
使用FORMAT()函数,指定格式字符串'N0'即可实现需求,同步注意SQL Server获取当前日期的函数为GETDATE():
SELECT FORMAT( (COALESCE((SELECT SUM(`invoices`.`paid_amount`) FROM `invoices` WHERE CAST(`invoices`.`date` AS DATE)=GETDATE()),0) + COALESCE((SELECT SUM(`other_incomes`.`other_income_amount`) FROM `other_incomes` WHERE CAST(`other_incomes`.`date` AS DATE)=GETDATE()),0)), 'N0') AS total FROM ....
内容的提问来源于stack exchange,提问作者aungmyatshein
相关产品推荐
相关产品推荐

