2016-11-09 134 views
0

テーブルAをテーブルBに挿入しました。問題のある列は-$25.2のようになります。最初に$を交換して、insertを試しました。このエラーが発生しましたSQL Server - データ型nvarcharをfloatに変換中にエラーが発生しました。

データ型nvarcharをfloatに変換中にエラーが発生しました。

私はその後

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

によって確認されたとは結果が返されませんでした。

これは奇妙です。何かを返すことになっています。

次はどうすればよいですか?

私も

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

ISNUMERIC()は使用しないでください。 $、。,, ,, - 、+すべては数字なしでも1として返されます。 TryParseはより良い – dfundako

+1

@dfundako:残念なことに、TryParseは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_Parse'は残念ながら利用できませんSQL Server ** 2008 ** ... ** 2012の**新機能** only ... –

+1

Noted、私は答えから削除しました。 –

+0

この回答は@John Hassの役に立ちましたか? –

-2

を使用してみてくださいを試してみました仲介者。

declare @a nvarchar(10) 

set @a = '-$25.2' 

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

データは小数点以下4桁までしか使用できない場合にのみ使用してください。そうしないと、変換精度が低下します。

関連する問題