web-dev-qa-db-ja.com

mssqlはvarcharをfloatに変換します

フィールド値productlengthは0.123です。これはビューからのものであり、varcharのデータ型を持っています。

O数学の比較を実行するために、浮動小数点数または数値に変換する必要があります。

convert(float、productlength)とcast(float as productlength)は両方とも機能しません。

error varchar cant be converted to floatまたは何らかの理由でそうです。

私が読んだvarcharから、単に数値文字列に変換することはできませんか?

これを回避する賢い方法はありますか?

9
Smudger

Varcharをfloatに変換し、表現した方法で変換できます。 varcharは数値であってはなりません。その中に何か他のものがなければなりません。 IsNumericを使用してテストできます。こちらをご覧ください:

declare @thing varchar(100)

select @thing = '122.332'

--This returns 1 since it is numeric.
select isnumeric(@thing)

--This converts just fine.
select convert(float,@thing)

select @thing = '122.332.'

--This returns 0 since it is not numeric.
select isnumeric(@thing)

--This convert throws.
select convert(float,@thing)
18
Bill Gregg

使用する

Try_convert(float,[Value])

https://raresql.com/2013/04/26/sql-server-how-to-convert-varchar-to-float/ を参照してください

6
Mthobisi Dube