LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

MSSQL数字格式化:轻松实现千分位分隔显示

admin
2026年4月15日 15:22 本文热度 51

在日常的数据库开发和报表制作中,我们经常需要将数字以千分位分隔的形式展示给用户,比如将2645433显示为2,645,433.00。这样不仅美观,更符合用户的阅读习惯。今天,我就为大家分享几种在MSSQL中实现数字千分位格式化的方法。

方法一:使用自定义函数(灵活可控)

首先,让我们来看一段由网友dobear_0922编写的自定义函数,它能够将数字转换为带千分位分隔符的格式:

--创建函数create function [dbo].[getformatstring](@dec decimal(28,8), @n int)returns varchar(32asbegin    declare @str varchar(32), @len int@left varchar(32), @right varchar(32),@end varchar(32)
    if @n!='0'     begin        set @str= round(@dec,@n)        select @left=left(@str,charindex('.',@str)-1),@len=len(@left)-2        while @len>1        begin            select @left=stuff(@left,@len,0,','), @len=@len-3        end        select @right=left(stuff(@str,1,charindex('.',@str),''), @n),@len=4        while @len <=len(@right)        begin            select @right=stuff(@right,@len,0,','), @len=@len+4        end        set @end= @left+'.'+@right    end    else    begin        set @str= round(@dec,@n)        select @left=left(@str,charindex('.',@str)-1),@len=len(@left)-2        while @len>1        begin            select @left=stuff(@left,@len,0,','), @len=@len-3        end        select @right=left(stuff(@str,1,charindex('.',@str),''), @n),@len=4        while @len <=len(@right)        begin            select @right=stuff(@right,@len,0,','), @len=@len+4        end        set @end= @left    end
    return @endend

使用示例:

-- 保留2位小数select [dbo].[getformatstring](2645433,2)-- 运行结果:2,645,433.00
-- 不保留小数select [dbo].[getformatstring](2645433,0)-- 运行结果:2,645,433

这个函数的优点是灵活可控,你可以通过第二个参数@n来控制保留的小数位数。

方法二:使用Money类型转换(简洁高效)

如果小数点后面不需要特殊处理,MSSQL其实提供了一个非常简洁的方法:

select convert(varcharconvert(money, 2645433), 1)-- 运行结果:2,645,433.00
这种方法只需要一行代码,利用了MSSQL内置的money类型转换功能,简单高效!

方法三:扩展应用 - 格式化金额字段

在实际应用中,我们经常需要对表中的金额字段进行格式化

-- 创建示例表create table #temp (    id int identity(1,1),    product_name varchar(50),    price decimal(18,2))
-- 插入测试数据insert into #temp (product_name, price) values ('商品A'12345.67),('商品B'9876543.21),('商品C'500.00)
-- 查询并格式化价格select     product_name,    dbo.getformatstring(price, 2as format_price,    convert(varcharconvert(money, price), 1as format_price2from #temp
-- 清理临时表drop table #temp

性能对比与建议

  1. 自定义函数:适用于复杂场景,可灵活控制格式,但多次调用时性能略差

  2. Money类型转换:代码简洁,性能较好,适合简单格式化需求

  3. 前端处理:如果数据量较大,建议在应用层进行格式化,减轻数据库压力

注意事项

  1. 使用money类型转换时,要注意数据范围,避免溢出

  2. 自定义函数中的@dec decimal(28,8)定义了较大的精度,可根据实际需求调整

  3. 格式化操作会增加CPU开销,建议在报表查询或展示层使用,避免在高频事务中使用

总结

今天我们学习了三种在MSSQL中实现数字千分位格式化的方法。无论是使用自定义函数的灵活,还是利用内置转换的简洁,都能满足日常开发需求。选择哪种方式,取决于你的具体场景和性能要求。


阅读原文:原文链接


该文章在 2026/4/15 18:06:44 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号