Sql server 如何将varchar转换为十进制,以便在Excel中显示为数字

Sql server 如何将varchar转换为十进制,以便在Excel中显示为数字,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,我有一列数据类型为decimal(18,2) 我在Excel导入的视图中使用它。 我想做的是将它转换为数字,以便在Excel中可以看到它是数字。 我得到这个错误: 将数据类型varchar转换为数字时出错 这是我的密码: cast(replace(isnull([wartosc],''),'.',',') AS numeric(18,2)) AS wartosc 如果您不想转换列中的字符,请使用sql server中的try_cast函数,它将自动忽略null和字符,并将它们设置为null。

我有一列数据类型为
decimal(18,2)

我在Excel导入的视图中使用它。
我想做的是将它转换为数字,以便在Excel中可以看到它是数字。 我得到这个错误:

将数据类型varchar转换为数字时出错

这是我的密码:

cast(replace(isnull([wartosc],''),'.',',') AS numeric(18,2)) AS wartosc 

如果您不想转换列中的字符,请使用sql server中的try_cast函数,它将自动忽略null和字符,并将它们设置为null。如果无法转换该值,则查询也不会失败

select try_cast(replace(isnull([wartosc],''),'.',',') AS numeric(18,2)) AS wartosc 

wartosc中的数据是什么?您正在使用哪些rdbms(Sybase或SQL Server)?什么版本?在SQL Server中,您不能将空字符串强制转换为
numeric
。如果
wartosc
为空,请删除
isnull
以从强制转换中获取
null
。我使用SQL Server 2012,以下是wartosc列中的示例数据:1035514.61为什么要将
替换为
?在您的系统中
SELECT@@LANGUAGE
的结果是什么?是SQL server中的同义词-如果源数据类型实际上是decimal,则根本不需要强制转换。。。