mssql将varchar转换为float

时间:2013-07-18 17:48:06

标签: sql-server type-conversion

我的字段值产品长度为0.123。这是一个视图,数据类型为varchar。

我需要将其转换为浮点数或数值,以便执行数学比较。

转换(浮动,productlength) 和 cast(productlength as float)都不起作用。

error varchar cant be converted to float或者其他人。

从我读过的varchar中,根本无法将其转换为数字字符串?

有什么聪明的方法吗?

3 个答案:

答案 0 :(得分:16)

您可以将varchars转换为浮点数,并且可以按照表达的方式执行。您的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)

答案 1 :(得分:5)

答案 2 :(得分:-1)

DECLARE @INPUT VARCHAR(5) = '0.12',@INPUT_1 VARCHAR(5)='0.12x';
select CONVERT(float, @INPUT) YOUR_QUERY ,
case when isnumeric(@INPUT_1)=1 THEN CONVERT(float, @INPUT_1) ELSE 0 END AS YOUR_QUERY_ANSWERED

以上将返回值

然而,以下查询无法正常工作

DECLARE @INPUT VARCHAR(5) = '0.12',@INPUT_1 VARCHAR(5)='0.12x';
select CONVERT(float, @INPUT) YOUR_QUERY ,
case when isnumeric(@INPUT_1)=1 THEN CONVERT(float, @INPUT_1) ELSE **@INPUT_1** END AS YOUR_QUERY_ANSWERED

因为@ INPUT_1实际上有varchar。

因此输出列中必须包含varchar。