我有一个列为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
可以转换为任何类型。所以它应该是可能的。
答案 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