SQL Server 2008 varchar到十进制导致:“将数据类型varchar转换为数字时出错”

时间:2011-10-04 11:42:33

标签: sql-server casting decimal numeric varchar

我正在尝试将存储为varchar的值存储在十进制字段中。

以下示例均导致:“将数据类型varchar转换为数字时出错。”

我在这里缺少什么?

SELECT CONVERT(decimal(11,2), '6.999,50') 
SELECT CONVERT(decimal(11, 2), '6.999,50')
SELECT CAST('6.999,50' AS decimal) / 100.0
SELECT CAST((CAST('6.999,50' AS decimal) / 100000) AS decimal(17,5))

2 个答案:

答案 0 :(得分:2)

您错过了6.999,50不是有效小数的事实。肯定不能有十进制值的逗号和小数点吗?它应该是多少?

假设您的语言环境指定。作为分组和小数分隔符: 要删除分组数字:

SELECT CONVERT(decimal(11,2), REPLACE('6.999,50', '.', '')) 

将产生6999,50作为小数

答案 1 :(得分:0)

我怀疑它是你的语言环境设置。您的语言环境使用逗号作为小数点,使用句点作为分隔符。您的sql server可能设置为默认的美国英语,相反,句点为小数点,逗号为分隔符。