【发布时间】:2026-02-08 10:55:01
【问题描述】:
我有以下SELECT 语句来计算RADIANS 和COS。
SELECT COS(RADIANS(latitude)) as Lat
FROM tbl_geometry;
但我收到一个错误:
将数据类型 varchar 转换为 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。
【问题讨论】:
-
您的纬度列似乎包含无效的浮点数据。
-
@jarlh,是的,你是对的!我在该列中有一些无效数据,那是因为它是
varchar类型,其中包含NULL, abc,等。如何克服这个问题? -
“克服”这个问题的最佳方法是在需要浮点信息时停止使用 varchar 数据类型。如果 NULL 给您带来问题,您应该使该列不可为空。如果您正确构建数据结构,则检索信息非常轻松。
-
Bad habits to kick : choosing the wrong data type - 你应该始终使用最合适的数据类型 - 毕竟这就是他们的目的!所以为什么在地球上您将您的纬度 - 显然 一个数值 - 存储为
varchar?!?!?!?
标签: sql sql-server latitude-longitude