【问题标题】:Postgresql query: "greater than" statement returns values less thanPostgresql 查询:“大于”语句返回的值小于
【发布时间】:2022-01-15 14:14:52
【问题描述】:

我正在尝试选择一列的值大于 (>) 另一列的行。但是,它会返回值小于另一列的行。

如果我使用小于运算符 (

列的值为“varchar”,我已将其转换为“整数”以供查询。

查询

SELECT tripcode, CAST(expected AS int), CAST(capacity AS int) FROM super_plan WHERE expected > capacity;

这是大于 (>) 运算符的结果:

expected capacity
60 310
50 250
80 270
60 270
60 340
80 340
80 250
70 360
50 360
80 360
... ...

查询

SELECT tripcode, CAST(expected AS int), CAST(capacity AS int) FROM super_plan WHERE expected < capacity;

这是小于 (

expected capacity
100 310
200 310
230 310
280 310
150 310
100 250
200 250
190 250
160 250
110 270
... ...

我不知道为什么会这样。我是 sql 新手。我已经搜索了网络和 stackoverflow,但我找不到有用的东西。

【问题讨论】:

  • 作为字符串'60' 大于(即按字典顺序排列晚于)'300',就像'foo' 大于'bar' 一样

标签: sql postgresql


【解决方案1】:

实际上需要在WHERE 子句中将列转换为整数,在该子句中进行比较:

SELECT tripcode, expected, capacity
FROM super_plan
WHERE expected::int > capacity::int;

如果您一直需要将这些列用作整数,不妨考虑更改列类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2011-10-03
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多