SQL Server 2008 varchar 到十进制的结果为:"Error converting data type varchar to numeric"



我试图在十进制字段中存储作为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))

您忽略了6.999,50不是一个有效的小数。小数中不能有逗号和小数点?它应该是多少?

假设您的区域设置指定。作为分组和,作为小数分隔符:删除分组数字:

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

将产生6999,50作为小数

我怀疑这是你的区域设置。您的区域设置使用逗号作为小数点,句点作为分隔符。你的sql server可能被设置为默认的美式英语,这是另一种方式,句号作为小数点,逗号作为分隔符。

相关内容

最新更新