gpt4 book ai didi

sql - Postgresql 索引小写(列)没有按预期工作?

转载 作者:行者123 更新时间:2023-11-29 14:07:55 26 4
gpt4 key购买 nike

以下是我在搜索“amadeus”子字符串时可以获得的数据示例:

db=# SELECT entidade FROM gma WHERE entidade ILIKE '%amadeus%';
entidade
---------------------------------
Hairdresser Amadeus
Snack-Bar Amadeus
Restaurant Amadeus
Restaurant Amadeus
Restaurant Amadeus
Amadeus - Musical Instruments
(6 rows)

但是我希望能够用 LIKE 替换 ILIKE。所以我试着用小写字母索引entidade:

db=# CREATE INDEX idx_gma_entidade ON gma USING btree
db-# ( lower(entidade) );
CREATE INDEX

现在我期望使用 LIKE 访问完全相同的数据:

db=# SELECT entidade FROM gma WHERE entidade LIKE '%amadeus%';
entidade
----------
(0 rows)

但是,如您所见,结果并不是我所期望的...有人可以解释为什么吗?而且,如果可能的话,我怎样才能实现预期的行为?

最佳答案

运行选择时需要在列上使用 lower() 函数:

SELECT entidade FROM gma WHERE lower(entidade) LIKE '%amadeus%';

但是因为你在前面有一个通配符,查询无论如何都不会使用索引。所以创建一个没有意义

关于sql - Postgresql 索引小写(列)没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com