2016-11-09 102 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位小數的情況下才使用此功能,否則您將失去轉換精度。

相關問題