在SQL Server中转换为浮点
我想将我的列数据类型从在SQL Server中转换为浮点,sql,sql-server-2008,Sql,Sql Server 2008,我想将我的列数据类型从varchar转换为float。该列包含数字和NULL 我需要的是计算不为空的位置的平均值 这是我的密码: ALTER TABLE table_name ALTER COLUMN column_name float GO DECLARE @mean_column_name real; SELECT @mean_column_name = AVG(column_name) FROM table_name 我犯了这个错误 将数据类型varchar转换为flo
varchar
转换为float
。该列包含数字和NULL
我需要的是计算不为空的位置的平均值
这是我的密码:
ALTER TABLE table_name
ALTER COLUMN column_name float
GO
DECLARE @mean_column_name real;
SELECT @mean_column_name = AVG(column_name)
FROM table_name
我犯了这个错误
将数据类型varchar转换为float时出错
我也试过了
DECLARE @mean_column_name real;
SELECT @mean_column_name = AVG(column_name)
FROM table_name
WHERE column_name IS NOT NULL
但我也犯了同样的错误
我应该怎么做?很明显,列中的值对于转换无效。在SQL Server 2012+中,您将执行以下操作:
select @mean_column_name = AVG( try_convert(float, column_name ))
from table_name ;
这在2008年是不受支持的。因此,请使用案例
:
select @mean_column_name = AVG( case when column_name not like '%[^0-9.]%' and column_name not like '%.%.%' then convert(float, column_name) end)
from table_name ;
Google上没有关于如何将varchar列转换为Float的内容?首先,为什么该列在varchar中?并向我们展示专栏的内容。。非常确定那里有很多列和点。在转换之前,你需要清理