【发布时间】: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