T sql 将字符串值转换为货币格式无效

T sql cast string value as money format not working

我有以下字符串格式的值,

值:

-24,52

-22,74

-13,08

303,75

当我将以上字符串值转换为货币时所有值显示如下

-2452,00

-2274,00

-1308,00

30375,00

所有值都有更多的“0”数字problem.How我可以将字符串值转换为精确的货币格式吗?

您可以尝试像这样删除 00:

select replace(convert(varchar,cast(yourNum as money),1), ',00','')

或者在 SQL Server 2012 中你可以尝试使用 FORMAT

SELECT Format(24.01, '##,##0') 
select cast('-24,01' as money) / 100

对于除了视觉呈现以外的任何事情,avoid MONEY entirely 都是个好主意。

试试这个查询

WITH t
AS
(
    SELECT -24.52 AS [val]
    UNION
    SELECT -22.74
    UNION
    SELECT -13.08
    UNION
    SELECT 303.75
)

SELECT CAST( ABS(t.val) AS decimal(10,2)) -- or decimal(10,0)
FROM t

我试着用点代替逗号,结果很幸运:

cast(replace('-12,23', ',', '.') as money) 

原因是,sql 服务器将“,”视为千位分隔符而不是十进制分隔符