SQL 服务器:将数据类型 varchar 转换为 float 时出错
SQL Server: Error converting data type varchar to float
我有以下 SELECT
语句来计算 RADIANS
和 COS
。
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
,所以我不确定什么是允许的,什么是不允许的。你可能想要包括小数点,因为例如。)
我有以下 SELECT
语句来计算 RADIANS
和 COS
。
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
,所以我不确定什么是允许的,什么是不允许的。你可能想要包括小数点,因为例如。)