-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 2008/1/17 Luiz Rafael Culik Guimaraes :
> eu tenho um banco criado como encoding latin1. > > mas um select traz na minha opiniao na ordem errada, ja que o codigo ascii > do - e > select sr_recno, cod_fab, indkey_004 from adm021_dbf where > cod_fab like '6PK%' order by cod_fab ; > ----------+----------+--------------------------------------- > 3314 | 6PK0860 | 6PK0860 3400761320 3314 > 4023 | 6PK-0860 | 6PK-0860 4000761275 4023 > 3315 | 6PK0870 | 6PK0870 3400761330 3315 Codificação de caracteres não tem nada com isso... > os registros que tem - nao deviam ser os primeiros? De acordo com ASCII, sim. De acordo com COLLATE, nao. A questão aqui não é o banco e sim glib. Veja: [EMAIL PROTECTED]:/usr/share/i18n/locales$ locale | grep COLLATE LC_COLLATE="pt_BR.UTF-8" [EMAIL PROTECTED]:/usr/share/i18n/locales$ sort ~/Desktop/sort.txt 6PK-0860 6PK0860 6PK-0870 [...] [EMAIL PROTECTED]:/usr/share/i18n/locales$ export LC_ALL=C [EMAIL PROTECTED]:/usr/share/i18n/locales$ sort ~/Desktop/sort.txt 6PK-0860 6PK-0870 6PK-0895 [...] Existem algumas incoerencias no template (ISO-14651) de locale que utilizamos para formar nosso pt_BR. Uma delas o Walter resolveu aqui [1]. Porém existem tantas outras que vale uma nova thread. <off-topic> Caso exista algum candidato disposto a trabalhar o hífen (<U002D>) em nosso COLLATE, estou aberto a discussões sobre criar uma rule para agrupamento de acordo com o nosso alfabeto. </off-topic> Voltando ao problema, existem alguns paleativos (leia-se gambi ...) para contornar o problema: 1. A forma clássica seria alterar o locale do cluster para 'C'. Este não utiliza as regras do COLLATE pt_BR e funciona, mas existem efeitos colaterais :-). 2. Já que a regra a ser utilizada no caso de <U002D> é a de substituição, então engane o COLLATE: ORDER BY REPLACE(cod_fab,'-','A'); ;-) afe! [1] http://www.nabble.com/ordena%C3%A7%C3%A3o-e-libc---uma-poss%C3%ADvel-solu%C3%A7%C3%A3o-%28podem-me-ajudar-a-testar-%29-td6883324.html#a6886505 Abraço! -Leo -- Leonardo Cezar et all http://www.dextra.com.br/postgres http://www.postgresql.org.br -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFHkLFgdFix3H/e1DkRAqWuAJ4+dNbzKVRAjq9/qCn8J7ZHIi+ptwCfYHS4 Otgql/wxVd9xJOONU+Zigf8= =yEXX -----END PGP SIGNATURE----- _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
