sql server 中 长数字隔三位用逗号""隔开如何做
sql server 中 长数字隔三位用逗号","隔开怎么做?
sql server 中 长数字隔三位用逗号","隔开怎么做?不要保留小数位,急!!!
------解决方案--------------------
select convert(varchar(1000),cast(123456789.12 as money),1)
--结果
123,456,789.12
------解决方案--------------------
sql server 中 长数字隔三位用逗号","隔开怎么做?不要保留小数位,急!!!
------解决方案--------------------
select convert(varchar(1000),cast(123456789.12 as money),1)
--结果
123,456,789.12
------解决方案--------------------
- SQL code
--数据转成货币格式,就是千分位逗号,小数位数之类分析 declare @inputNumber nvarchar(30) set @inputNumber='123246.456778' --比如三位小数 --直接转成数字位数 SELECT CONVERT(NUMERIC(18,3),@inputNumber) --SELECT CONVERT(MONEY,CONVERT(NUMERIC(18,1),@inputNumber)) --SELECT SUBSTRING('WONDER.abc',0,CHARINDEX('.','WONDER.abc')) --再截取整数 select SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) ) --截取小数部分 select SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)))+1 ,len(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)))-charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) ) --将整数部分转成数字 select CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) ),1) --整数部分转成货币千分位 select convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1) -- --截取转成货币千分位后的整数部分 SELECT SUBSTRING(convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1),0, charindex('.', convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1)) ) --合并小数位 SELECT SUBSTRING(convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1),0, charindex('.', convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1)) ) +'.' +SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)))+1 ,len(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)))-charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) ) 分析完毕自己创建自定义函数 : --格式化数据为千分位等格式,比如:1245.56678,144,5.57 --参数:@inputNumbe输入字符,@floatCount小数位数,0,1,2,3,4 --时间:2011-04-13 ALTER function FormatNumeric(@inputNumber nvarchar(30) , @floatCount int) RETURNS nvarchar(30) AS BEGIN DECLARE @strTemp NVARCHAR(30) --1个小数位 IF(@floatCount=1) BEGIN --测试数据 --declare @inputNumber nvarchar(30) --set @inputNumber='123246.456' --SELECT CONVERT(NUMERIC(18,1),@inputNumber) --SELECT CONVERT(MONEY,CONVERT(NUMERIC(18,1),@inputNumber)) --SELECT CONVERT(NVARCHAR(30) , CONVERT(MONEY,CONVERT(NUMERIC(18,1),@inputNumber)) ,1) --SELECT charindex('.','156.23',0) --SELECT charindex('.','123,246.50',0)+1 --SELECT SUBSTRING('123,246.50',1,charindex('.','123,246.50',0)+1) SET @strTemp= SUBSTRING(CONVERT(NVARCHAR(30) , CONVERT(MONEY,CONVERT(NUMERIC(18,1),@inputNumber)) ,1) ,1, CHARINDEX('.',CONVERT(NVARCHAR(30) ,CONVERT(MONEY,CONVERT(NUMERIC(18,1),@inputNumber)) ,1),0)+1) RETURN @strTemp END --2个小数位 IF(@FLOATcount=2) BEGIN --SELECT CONVERT(NVARCHAR(30) , CONVERT(MONEY,CONVERT(NUMERIC(18,2),@inputNumber)) ,1) SET @strTemp= SUBSTRING(CONVERT(NVARCHAR(30) , CONVERT(MONEY,CONVERT(NUMERIC(18,2),@inputNumber)) ,1) ,1, CHARINDEX('.',CONVERT(NVARCHAR(30) ,CONVERT(MONEY,CONVERT(NUMERIC(18,2),@inputNumber)) ,1),0)+2) RETURN @strTemp END --3.无小数 IF(@FLOATcount=0) BEGIN --SELECT CONVERT(NVARCHAR(30) , CONVERT(MONEY,CONVERT(NUMERIC(18,0),@inputNumber)) ,1) SET @strTemp= SUBSTRING(CONVERT(NVARCHAR(30) ,CONVERT(MONEY,CONVERT(NUMERIC(18,0),@inputNumber)) ,1) ,0, CHARINDEX('.',CONVERT(NVARCHAR(30) ,CONVERT(MONEY,CONVERT(NUMERIC(18,0),@inputNumber)) ,1),0)) RETURN @strTemp END --默认位3位小数 ELSE BEGIN SET @strTemp= SUBSTRING(convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1),0, charindex('.', convert(nvarchar(30), CONVERT(money,SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,0 ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) )),1)) ) +'.' +SUBSTRING(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)) ,charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)))+1 ,len(convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber)))-charindex('.',convert(nvarchar(30) ,CONVERT(NUMERIC(18,3),@inputNumber))) ) END return @strTemp END --SELECT dbo.FormatNumeric(Fld0055,2) from Pur0099 --SELECT dbo.FormatNumeric(Fld0055,1) from Pur0099