2017-02-15 2 views
0

Ich habe unaccent in meiner Postgresql-Datenbank installiert (obwohl nicht sicher, ob dies für meine Frage relevant ist).Postgresql enthalten akzentuierte Buchstaben in alphabetischer Reihenfolge in den Suchergebnissen

, wenn ich ein einfaches tun

select * from keywords order by keyword desc; 

gibt alle Einträge mit œ beginnen dann é und è usw. möchte ich die Einträge in den Worten sein, die mit normalen e beginnen, so sollte dieser Befehl zurückgeben höchstrangige die Wörter beginnend mit z, als y und so weiter.

Ich habe versucht:

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

, die nicht gut ist, wie unaccent nur Volltextsuche und unaccents den Suchbegriff, nicht die Ergebnisse.

+2

Ich weiß nicht, ob es ein Tippfehler in der Abfrage (und wenn es überhaupt funktioniert), aber 'unaccent wählen (*)' ist seltsam. Vielleicht hast du nur 1 Spalte? In beiden Fällen sollten Sie "uncontent" in die "ORDER BY" -Klausel setzen, wie zum Beispiel 'select * aus den Schlüsselwörtern order by unaccent (keyword) desc ' – pozs

Antwort

0

Das ist ein Sortierproblem. Überprüfen Sie die von Ihnen verwenden oder verwenden Sie einfach die, die Sie wollen:

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

In diesem Fall pt_BR wie vorgesehen funktioniert.

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

Verwandte Themen