首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres文本列比较错误

Postgres文本列比较错误
EN

Stack Overflow用户
提问于 2017-12-01 09:01:16
回答 1查看 131关注 0票数 1

我正在使用Postgres 9.2.24

今天我发现了一些令人困惑的东西。

我有一个带有文本列的表,表中有两个记录具有保存列的值。

这两个值具有相同的md5值。

但是当我使用=运算符时,我只能得到一个值。但是如果我在%中使用,我可以得到两个值。

有谁知道原因吗?

erp_number列数据类型是文本。

就像我们可以得到两张唱片一样

代码语言:javascript
复制
select  md5(erp_number) 
from _order 
where owner_id = 36700 
and erp_number  like  '%北京20171130DFCX'

返回:

代码语言:javascript
复制
a0630e878a08c692b0d3ddc7cf3907b4
a0630e878a08c692b0d3ddc7cf3907b4

使用

代码语言:javascript
复制
like '%北京20171130DFCX' or like '北京20171130DFCX%' or like '%北京20171130DFCX'  

我也可以得到同样的行。似乎%在哪里并不重要。

但是如果我使用=,我就能得到一张唱片

代码语言:javascript
复制
select  erp_number 
from  _order 
where owner_id = 36700 
and erp_number  =  '北京20171130DFCX'

返回

代码语言:javascript
复制
a0630e878a08c692b0d3ddc7cf3907b4
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-01 10:20:09

大多数情况下,这种影响是由损坏的索引造成的。YUou可以通过禁用索引查询来检查是否是这样的:

代码语言:javascript
复制
set enable_bitmapscan = off; 
set enable_indexscan to off;

如果您看到了“禁用索引”的效果,只需运行

代码语言:javascript
复制
reindex table_name;

还需要花一些时间来确定索引是如何损坏的。

谢谢Lukasz对enable_bitmapscan的评论

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47589830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档