Basta dare un'occhiata, per favore:PostgreSQL ordinamento con cirillico "ь"
WITH toks AS (
SELECT tok
FROM
unnest('{ь, а, чь, ча, чль, чла}'::text[]) AS tok
ORDER BY tok COLLATE "uk_UA"
)
SELECT ROW_NUMBER() OVER() AS "#", tok FROM toks
ORDER BY tok COLLATE "uk_UA"
PostgreSQL 9.3 (Ubuntu) mi dà questo risultato:
# | tok
---+-----
1 | а
2 | ча
3 | чль
4 | чла
5 | чь
6 | ь
(6 rows)
Qui le righe 1, 2, 5 e 6 sono ordinati correttamente ("ь" va dopo "а") mentre le righe 3 e 4 sono ordinate in modo errato ("а" va dopo "ü").
Tutte le lettere sono cirilliche, l'ho controllato tante volte.
prega, cosa c'è di sbagliato e come aggirare (
UPDATE:. Questo è un bug che è stato fissato in corrente principale di recente: https://sourceware.org/bugzilla/show_bug.cgi?id=17293
UPDATE2:. Si prega di notare la mia risposta qui sotto
Qual è la codifica del database? Sembra che importi ... –
@TagirValeev Codifica: UTF8, Collation: uk_UA.UTF-8 (entrambi come mostrato da pgadmin3). – brownian
PostgreSQL utilizza l'ordine delle impostazioni internazionali dal sistema operativo. Se si utilizza l'utilità 'sort' della riga di comando con le stesse regole di confronto e gli stessi dati, questo dovrebbe produrre lo stesso ordine. –