2017-02-15 42 views
0

我在我的postgresql数据库中安装了unaccent(尽管不确定这是否与我的问题相关)。postgresql在搜索结果中按字母顺序包含突出显示的字母

当我做一个简单的

select * from keywords order by keyword desc; 

返回所有开头的条目œ然后éè等。我希望这些条目是与正常e开头的单词内,这样的命令应该返回最高排名以z开头的词,比y等等。

我想:

select unaccent(*) from keywords order by keyword desc; 

为unaccent只有全文搜索和unaccents搜索词,而不是其结果是不好的。

+2

我不知道,如果它在查询一个错字(如果它在所有工作),但'选择unaccent(*)'是怪异。也许你只有1列?无论如何,你应该把'unaccent'放入'ORDER BY'子句中,就像'select * from keywords order by unaccent(keyword)desc' – pozs

回答

0

这是一个整理问题。请检查您正在使用的一个或只使用一个你想要的:

with t (w) as (values ('œ'),('é'),('è'),('z'),('y')) 
select w 
from t 
order by w collate "pt_BR" desc; 
w 
--- 
z 
y 
œ 
è 
é 

在这种情况下按预期pt_BR工作。

https://www.postgresql.org/docs/current/static/collation.html