问题将字符串转换为十进制

时间:2018-02-07 03:29:16

标签: sql sql-server sql-server-2012

我真的厌倦了在SQL Server中将字符串转换为十进制。

这是我的查询我试图转换为十进制

DECLARE @price VARCHAR(50)
SET @price = '168,00'

SELECT
    REPLACE(CAST(@price AS DECIMAL(29,2)), '.', ',')

UPDATE MyTable 
SET Invoice = REPLACE(CAST(@price AS DECIMAL(29,2)), '.', ',') 
WHERE ID = 111

但是我收到了这个错误:

  

Msg 8114,Level 16,State 5,Line 7
  将数据类型varchar转换为数字

时出错

如何摆脱这个问题?

1 个答案:

答案 0 :(得分:3)

在转换前先替换,必须用句号替换逗号。

SET Invoice = CAST(REPLACE(@price, ',', '.') AS decimal(29,2))