Sql server SQL Server 2008 varchar到十进制的结果为;将数据类型varchar转换为数字时出错;

Sql server SQL Server 2008 varchar到十进制的结果为;将数据类型varchar转换为数字时出错;,sql-server,casting,decimal,numeric,varchar,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

我试图在十进制字段中存储一个存储为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可能设置为默认的美式英语,反之亦然,句点作为小数点,逗号作为分隔符

结果的格式应为:十进制(11,2)。所以我想我需要一个过滤分组数字的函数?我用一个替换示例编辑了我的答案,以删除“.”字符。无论语言环境如何,我认为SQL都无法处理包含分组字符的varchar的转换。