Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中转换为浮点_Sql_Sql Server 2008 - Fatal编程技术网

在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中?并向我们展示专栏的内容。。非常确定那里有很多列和点。在转换之前,你需要清理