SQL Server - 将数据类型nvarchar转换为浮点数的错误
我将表A插入表B.有问题的列看起来像-$25.2
。我首先替换了$
并尝试insert
。得到此错误SQL Server - 将数据类型nvarchar转换为浮点数的错误
将数据类型nvarchar转换为float时出错。
我再由
SELECT *
FROM B
WHERE ISNUMERIC([Col Name]) <> 1
检查并没有返回结果。
这很奇怪。它应该返回一些东西。
接下来应该检查什么?
我也尝试过类似
CAST(REPLACE([Col Name], '-$', '') AS FLOAT)
尝试使用此
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
Try_Rarse不幸的是无法在SQL Server ** 2008 ** ...这是** 2012 **中的一项新功能... –
注意到,我将其从答案中删除。 –
这个答案帮助@John Hass? –
虽然“钱”的数据类型是不太适合做计算,在这种情况下,你可以使用它作为一个中介。
declare @a nvarchar(10)
set @a = '-$25.2'
select
@a,
cast(cast(@a as money) as float)
只有在您的数据最多只能输入4位小数的情况下才使用此功能,否则您将失去转换精度。
请勿使用ISNUMERIC()。 $,。,,, - ,+全部返回为1,即使没有数字。 Try_Parse更好 – dfundako
@dfundako:'Try_Parse'不幸的是在SQL Server ** 2008中不可用** ...这是** 2012 **中的一项新功能... –