Sql server 将varchar转换为德语格式的浮点时出错
使用德语数字格式,我正在将带有列amount的CSV上载到我的SQL Server DB中,作为SSIS包的一部分 此包是通过SQL Server导入和导出向导创建的。SQL Server中为列数量分配的数据类型为varchar 50,null 三个数据如下所示:Sql server 将varchar转换为德语格式的浮点时出错,sql-server,ssis,sql-server-2008-r2,number-formatting,type-conversion,Sql Server,Ssis,Sql Server 2008 R2,Number Formatting,Type Conversion,使用德语数字格式,我正在将带有列amount的CSV上载到我的SQL Server DB中,作为SSIS包的一部分 此包是通过SQL Server导入和导出向导创建的。SQL Server中为列数量分配的数据类型为varchar 50,null 三个数据如下所示: Declare @amount varchar(50) Set @amount = '1245,89' Select @amount 对于后续操作,我希望将其转换为数据类型float: select convert(float,@
Declare @amount varchar(50)
Set @amount = '1245,89'
Select @amount
对于后续操作,我希望将其转换为数据类型float:
select
convert(float,@amount)
这给了我一个错误:
Msg 8114,16级,状态5,第5行转换数据类型varchar时出错
漂浮
将十进制分隔符从“,”更改为“.”会起作用:
这就是我想要的,但我想知道是否可以直接在导入/导出向导中实现这一点,或者至少不替换“,”by“。除此之外,还有其他设置需要我改成德语吗
您是否尝试过使用PARSE而不是CONVERT?不,对于我的示例,这是什么样子的?这个函数对我来说是未知的,所以到目前为止,我只是通过搜索找到了文档-请参阅另一个选项是尝试更改导出,以便amount列是一个更合适的数据类型开始…啊,很抱歉,我使用的是SQL Server 2008 R2,它不支持此函数。关于更改SSIS包内的导出:这也是我尝试过的,但后来我得到了124589数据类型float!而不是1245,89。
Declare @amount varchar(50)
Set @amount = '1245.89'
Select @amount
select
convert(float,@amount) + 3