SQL Server - 将数据类型nvarchar转换为float时出错

时间:2016-11-09 18:21:01

标签: sql-server database sql-server-2008 tsql type-conversion

我正在将表A插入表B.有问题的列看起来像-$25.2。我首先替换了$并尝试了insert。出现此错误

  

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

然后我按

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

并且没有返回任何结果。

这很奇怪。应该归还一些东西。

接下来我应该检查什么?

我也试过像

这样的东西
CAST(REPLACE([Col Name], '-$', '') AS FLOAT)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-2)

虽然'money'数据类型不适合进行计算,但在这种情况下,您可以将其用作中介。

declare @a nvarchar(10)

set @a = '-$25.2'

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

只有当你的数据最多只有4个小数位时才使用它,否则你将失去转换的精确度。