SQL 服务器:将数据类型 varchar 转换为 float 时出错

SQL Server: Error converting data type varchar to float

我有以下 SELECT 语句来计算 RADIANSCOS

SELECT COS(RADIANS(latitude)) as Lat 
FROM tbl_geometry;

但是我收到一个错误:

Error converting data type varchar to float.

我的尝试:

尝试 #1:

select Cos(convert(float, (Radians(convert(float, latitude))))) as Lat 
from tbl_geometry;

尝试#2

select Cos(Radians(convert(float, latitude))) as Lat 
from tbl_geometry;

两次尝试都会导致相同的错误。

注意:列Latitude的类型为varchar

使用try_convert()查找无效数据:

select latitude
from tbl_geometry
where try_convert(float, latitude) is null;

try_convert() 在 SQL Server 2012+ 中可用。

您可以使用:

SELECT      CASE
                WHEN PATINDEX('%[^0-9]%', latitude) > 0 THEN 0
                ELSE Cos(Radians(convert(float,latitude)))
            end as latitude          
FROM        tbl_geometry

如果遇到不可转换的值,您可以使用 THEN 将属性填充为 null 或其他值。或者,如果您想一起跳过这些行,则可以在 WHERE 中使用 PATINDEX。 (你可能不得不玩弄 patindex,我通常不使用 floats,所以我不确定什么是允许的,什么是不允许的。你可能想要包括小数点,因为例如。)