SQL:将一列numeric和null值转换为FLOAT

时间:2017-06-14 04:01:33

标签: sql sql-server

我有一个列为varchar类型的表。该列包含568710个数字记录(我的意思是ISNUMERIC()返回1)和91个空值记录(即ISNUMERIC()返回0)。现在,我需要将列转换为FLOAT而不会丢失null记录或将其替换为任何其他值。在SQL中有可能吗? 当我使用CONVERT(FLOAT, [Value])转换时,出现以下错误:

Msg 8114, Level 16, State 5, Line 48
Error converting data type varchar to float.

我读到null可以转换为任何类型。所以它应该是可能的。

3 个答案:

答案 0 :(得分:2)

您可以使用此

SELECT CONVERT(float, CASE WHEN ISNUMERIC(columnName) = 1 THEN columnName ELSE NULL END) FROM TableABC

答案 1 :(得分:1)

尝试:::

ALTER TABLE tablename
ADD NewFloatColumn FLOAT
UPDATE TableName
SET NewFloatColumn = 
CASE WHEN ISNUMERIC(VarcharColumn) =1 THEN CAST (VarcharColumn AS float)
WHEN UPPER(VarcharColumn) = 'NULL' THEN null
END

答案 2 :(得分:0)

Select (CASE WHEN ISNUMERIC(c) = 1
         THEN (CASE WHEN c LIKE '%.%' THEN c ELSE c + '.00' END)
         ELSE '0.00'
    END)from table_name