sql server格式化数字

澳门新葡亰网站注册,用sql语句来格式化double型的数据,比如,只取出小数点后面的两位一。主要方法

–取小数位前数字,不考虑四舍五入select left(‘30000.72234’,
charindex(‘.’, ‘30000.72234’)-1)其中:charindex(‘.’,
‘30000.72234’)获得小数点的位置;-1则表示在小数点前面的全部,如果想获取小数点后面的n为,写成+n就可以了。还挺好用的。

–每三位用逗号相隔,留2位小数,不考虑四舍五入select convert(varchar,
cast(round(30000.72234,0) as money), 1)

–每三位用逗号相隔,不留小数位,考虑四舍五入select left(convert(varchar,
cast(round(30000.72234,0) as money), 1) , charindex(‘.’,
convert(varchar, cast(round(30000.72234,0) as money), 1))-1)

二。CAST和 ROUND的比较1. SELECT CAST(‘123.456’ as decimal) 将会得到
123。如果希望得到小数点后面的两位。则需要把上面的改为SELECT
CAST(‘123.456’ as decimal(38, 2))

===123.46自动四舍五入了!

2.SELECT ROUND(123.75633, 2, 1), ROUND(123.75633,
2)上面的SQL得到的2个值是不一样的,前一个是:123.75000,后一个是:123.76000。因为前者在进行四舍五入之前,小数点后已经被截取,保留了2位。而后者则没有被截取,四舍五入时自然就会得到123.76000

示例图1:

示例图2:sql语句如下:SELECT
CONVERT(VARCHAR(15),CAST(CONVERT(DECIMAL(12,2),LTRIM(PREPAY)) AS
MONEY),1) PREPAY_V,PREPAY FROM
INVOICEHDgo格式:CONVERT(VARCHAR(15),CAST(CONVERT(DECIMAL(12,2),LTRIM(数据库教程字段名))
AS MONEY),1)注意事项:SELECT
CONVERT(VARCHAR(100),CAST(CONVERT(DECIMAL(38,2),LTRIM(‘111111111111111.00’))
AS MONEY),1) moneySELECT
CONVERT(VARCHAR(100),CAST(CONVERT(DECIMAL(38,2),LTRIM(‘111111111111111.00’))
AS MONEY),1) money