2016-11-09 114 views
0

我将表A插入表B.有问题的列看起来像-$25.2。我首先替换了$并尝试insert。得到此错误SQL Server - 将数据类型nvarchar转换为浮点数的错误

将数据类型nvarchar转换为float时出错。

我再由

SELECT * 
FROM B 
WHERE ISNUMERIC([Col Name]) <> 1 

检查并没有返回结果。

这很奇怪。它应该返回一些东西。

接下来应该检查什么?

我也尝试过类似

CAST(REPLACE([Col Name], '-$', '') AS FLOAT) 
+4

请勿使用ISNUMERIC()。 $,。,,, - ,+全部返回为1,即使没有数字。 Try_Parse更好 – dfundako

+1

@dfundako:'Try_Parse'不幸的是在SQL Server ** 2008中不可用** ...这是** 2012 **中的一项新功能... –

回答

0

尝试使用此

DECLARE @Text nvarchar(100) 

SET @Text = '-$1234.567' 
SET @Text = Replace(@Text,'$', '') 
Select CONVERT(float, @Text) AS ColumnValue 
Select ABS(CONVERT(float, @Text)) AS ColumnValue 
+0

Try_Rarse不幸的是无法在SQL Server ** 2008 ** ...这是** 2012 **中的一项新功能... –

+1

注意到,我将其从答案中删除。 –

+0

这个答案帮助@John Hass? –

-2

虽然“钱”的数据类型是不太适合做计算,在这种情况下,你可以使用它作为一个中介。

declare @a nvarchar(10) 

set @a = '-$25.2' 

select 
    @a, 
    cast(cast(@a as money) as float) 

只有在您的数据最多只能输入4位小数的情况下才使用此功能,否则您将失去转换精度。

相关问题