【问题标题】:How to select a specific row based on two values in PostgreSQL如何根据 PostgreSQL 中的两个值选择特定行
【发布时间】:2019-05-20 17:51:39
【问题描述】:

我有一个非常奇怪的问题。 我知道我的表的第一行有两列具有以下值: 纬度 = 35.6635 lng = 139.395

数据类型是真实的(我已经检查过了)。

我正在尝试使用以下查询选择这些值:

select lat, lng from mytable where lat = 35.6635 and lng = 139.395

输出什么都没有,即我在表中找不到值。

知道这里有什么问题吗?

【问题讨论】:

    标签: postgresql where sqldatatypes


    【解决方案1】:

    Postgres 中的REAL 类型不精确,这意味着您在查询中使用的确切值可能实际上并未按原样存储。如果您需要精确的存储空间,您应该使用NUMERICDECIMAL。有关精确和不精确数字类型的更多信息,请参阅 Postgres documentation

    作为查找记录的解决方法,您可以尝试:

    select lat, lng
    from mytable
    where round(lat, 1) = 35.7 and round(lng, 1) = 139.4;
    

    如果上述查询返回多条记录,希望您能清楚您要查找的记录。

    【讨论】:

      【解决方案2】:

      你可以试试这样的:

      select lat, lng from mytable where lat > 35.6634 and lng > 139.394 and lat < 35.6636 and lng < 139.396
      

      在计算机世界中,您永远不应该比较等效的浮点数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-08
        • 1970-01-01
        • 1970-01-01
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多