在SQL Server 2008 R2中用逗号格式化数字但没有小数?

Sun*_*nil 8 sql sql-server sql-server-2008

我使用以下内容在T-SQL中创建逗号格式的数字.如何摆脱小数点和小数点后的数字.所以如果格式化后得到1,112.00,我怎么才能得到1,112?

SELECT CONVERT(varchar, CAST(1112 AS money), 1)
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 17

DECLARE @val varchar(50)

set @val = CONVERT(varchar(50), CAST(1112 AS money), 1)
SELECT  left(@val, len(@val) - 3)
Run Code Online (Sandbox Code Playgroud)

这也适用于小数点后的数字:

DECLARE @val varchar(50)

set @val = CONVERT(varchar(50), CAST(1112.56 AS money), 1)
SELECT  left(@val, len(@val) - 3)
Run Code Online (Sandbox Code Playgroud)

注意:正如@Mahmoud Gamal指出的那样,格式化通常更适合在前端执行.


Mah*_*mal 16

像这样:

SELECT REPLACE(CONVERT(VARCHAR(20), CAST(1112 AS MONEY), 1), '.00', '');
Run Code Online (Sandbox Code Playgroud)

这总是很好.因为CONVERT(VARCHAR(20), CAST(1112 AS MONEY), 1)将始终返回一个数字.00.但是,如果逗号后面有十进制数字,MitchWheat的答案会更好.

请注意:您应该考虑在前端应用程序中执行此格式化操作.T-SQL与格式无关.


小智 15

https://database.guide/how-to-format-numbers-in-sql-server/

从 SQL 2012 开始,您可以编写:

SELECT FORMAT(ColumnName, 'N0');
Run Code Online (Sandbox Code Playgroud)


Gov*_*ind 10

PARSENAME(CONVERT(VARCHAR,CAST(1112 AS MONEY),1),2)
Run Code Online (Sandbox Code Playgroud)

它会很好地工作.

当自动将数字转换为货币数据类型时,将在小数点后添加2个零.PARSENAME函数将删除该零.