我真的厌倦了在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转换为数字
如何摆脱这个问题?
答案 0 :(得分:3)
在转换前先替换,必须用句号替换逗号。
SET Invoice = CAST(REPLACE(@price, ',', '.') AS decimal(29,2))