Postgres SELECT没有显示正确的结果

时间:2018-04-20 09:26:44

标签: sql postgresql

假设我的数据库中包含列Id,Name,Code的表。 当我执行时,让我们说

 SELECT * FROM Order

我得到两条记录:

Id,Name,Code
1,FirstOrder,165y
2,SecondOrder,165y

两个订单使用相同的代码,一切正常! 但是当我试图通过代码找到时:

SELECT * from ORDER where code = '165y'

我的结果只有一行:

Id,Name,Code
1,FirstOrder,165y

尽管它具有相同的代码,但未显示第二个顺序。 但如果我试试这个:

SELECT * from Order where lower(code) = '165y'

我再次获得两行:

    Id,Name,Code
1,FirstOrder,165y
2,SecondOrder,165y

在我看来,这些行具有相同的代码值:'165y',但看起来像postgres在某种程度上有所不同。 Postgres版本 - 9.3.17, 代码列类型 - varchar(50)。

可能是什么问题?我甚至不知道在哪里搜索。 需要帮助。

1 个答案:

答案 0 :(得分:0)

问题得到部分解决。 这种行为的主要原因是 像

一样搜索
SELECT * from Order where lower(code) = '165y'
查询时

使用Seq Scan

SELECT * from ORDER where code = '165y'

使用代码字段上的唯一索引进行位图索引扫描搜索。

我仍然不知道如何使用唯一索引重复值。 所以我只是删除了这个索引,清理了重复项并再次创建了索引。