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 服务器将“,”视为千位分隔符而不是十进制分隔符
我有以下字符串格式的值,
值:
-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 服务器将“,”视为千位分隔符而不是十进制分隔符