gpt4 book ai didi

sql-server - SQL Server 2008 MAX 和 MIN 函数在处理负数时无法按预期工作

转载 作者:行者123 更新时间:2023-12-02 22:17:46 24 4
gpt4 key购买 nike

我注意到 SQL Server 2008 的 MAX/MIN 聚合函数在处理负数时无法按预期工作。

我正在处理纬度和经度值(许多是负数),并且我得到的结果似乎只查看绝对值。

SELECT 
MAX(g.Geo_Lat) AS MaxLat, MAX(g.Geo_Long) AS MaxLong,
MIN(g.Geo_Lat) AS MinLat, MIN(g.Geo_Long) AS MinLong
FROM Geolocations g

以下是查询结果:

MaxLat          MaxLong         MinLat        MinLong
38.3346412 -85.7667496 38.1579234 -85.5289429

请注意 maxlong 和 minlong 的结果不正确。

是否有一些解决方法(除了特殊的 UDF)?

最佳答案

数据类型和排序规则决定顺序。

地理数据(例如存储为地理类型)的排序方式可能与浮点值不同 - 但在本例中,它们不会。地理类型不可排序,只有纬度和经度可以排序,如您所显示的。但这些输出为浮点值。

您使用的是什么数据类型会导致这种情况发生?经过一些测试,我最终弄清楚了。对于地理数据或任何包含负数的数字类型,它可以按预期工作。

您将纬度和经度存储为文本数据 - 不是吗?

将它们转换为漂浮物。这样就可以解决问题。

关于sql-server - SQL Server 2008 MAX 和 MIN 函数在处理负数时无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11003116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com