SQL Server 2008 MAX和MIN功能无法正常工作,带负数

MC9*_*000 4 sql-server max min sql-server-2008 sqldatatypes

我注意到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
Run Code Online (Sandbox Code Playgroud)

以下是查询结果:

MaxLat          MaxLong         MinLat        MinLong
38.3346412      -85.7667496     38.1579234    -85.5289429
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_*eim 5

数据类型和归类确定顺序.

例如存储为地理类型的地理数据可以与浮点值排序不同 - 但在这种情况下,它们不会.当您展示时,Gopegraphic类型不可排序,只有纬度和经度.但那些输出为浮动值.

您使用哪种数据类型会导致这种情况发生?在进行一些测试之后,我终于弄明白了.对于地理数据或任何包含负数的数字类型,它将按预期工作.

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

把它们当成花车.这将解决它.