Re: [pgbr-geral] Ordenação
Em 24/11/2011 18:44, JotaComm escreveu: > Estranho.. Qual o locale e codificação que você está usando? > psql -l > Codificação UTF8, Collation pt_BR.UTF-8, CType pt_BR.UTF-8 > Tem um exemplo do erro que deu? Erro não; apenas não surtiu efeito: ou seja, resultou ignorando o asterisco SELECT * FROM nomes ORDER BY nome='LORENA' DESC,nome ASC; > ANA, IVA, *LORENA, MARIA... mas colocando o asterisco em LORENA no ORDER BY, funcionou: SELECT * FROM nomes ORDER BY nome='*LORENA' DESC,nome ASC; > *LORENA, ANA, IVA, MARIA... testei colocando asterisco em MARIA também e o resultado foi: SELECT * FROM nomes ORDER BY substr(nome,1,1) ASC, nome ASC; > *LORENA, *MARIA, ANA, IVA... colocando um espaço em branco em MARIA: > MARIA, *LORENA, ANA, IVA Obs: os resultados são em coluna; apenas aqui apresentei em linha Abração Paulo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Opa, Em 24 de novembro de 2011 18:13, Paulo Nievierowski escreveu: > JotaComm > > > > SELECT * FROM nomes ORDER BY nome='LORENA' DESC,nome ASC; > > -- > > JotaComm > > http://jotacomm.wordpress.com > > Testei como você sugeriu e não deu o resultado esperado; mas o modelo > funcionou se o nome estivesse com o asterisco (*LORENA); > Mas isso pressupõe conhecimento prévio do nome, digamos, especial. Então > fiz alguns testes e obtive o esperado com a seguinte sintaxe: > Estranho.. Qual o locale e codificação que você está usando? Tem um exemplo do erro que deu? > > SELECT * FROM nomes ORDER BY substr(nome,1,1) ASC, nome ASC; > > Valeu gente! > > Paulo > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > Abraços -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
JotaComm > > SELECT * FROM nomes ORDER BY nome='LORENA' DESC,nome ASC; > -- > JotaComm > http://jotacomm.wordpress.com Testei como você sugeriu e não deu o resultado esperado; mas o modelo funcionou se o nome estivesse com o asterisco (*LORENA); Mas isso pressupõe conhecimento prévio do nome, digamos, especial. Então fiz alguns testes e obtive o esperado com a seguinte sintaxe: SELECT * FROM nomes ORDER BY substr(nome,1,1) ASC, nome ASC; Valeu gente! Paulo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Em 24 de novembro de 2011 17:54, Guimarães Faria Corcete DUTRA, Leandro escreveu: > 2011/11/24 JotaComm : >> >> SELECT * FROM nomes ORDER BY nome='LORENA' DESC,nome ASC; > > Vivendo e aprendendo… E o barato é que se aplica ao grupo que inicia com *: SELECT * FROM nomes ORDER BY nome LIKE '*%' DESC,nome ASC; Jota, essa você tinha que ter apresentado nos 5 minutos do PGBR2011... -- Daniel Cristian Cruz クルズ クリスチアン ダニエル ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
2011/11/24 JotaComm : > > SELECT * FROM nomes ORDER BY nome='LORENA' DESC,nome ASC; Vivendo e aprendendo… ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Olá, Em 24 de novembro de 2011 15:37, Paulo Nievierowski escreveu: > Olá, > > Tenho uma lista de nomes, apresentada em ordem alfabética, tal qual: > ANA, IVA, LORENA, MARIA... > mas preciso que LORENA, por uma necessidade especial, seja a primeira da > lista e precedo este com um asterisco: > Logo, espero que resulte: *LORENA, ANA, IVA, MARIA... > Bem, assim funcionava com LATIN1, mas com UTF8, parece que é > simplesmente ignorado: > ANA, IVA, *LORENA, MARIA... > Qual seria a solução? > Veja se ajuda você: SELECT * FROM nomes ORDER BY nome='LORENA' DESC,nome ASC; > > PG 8.4.9 em Linux Mandriva > #psql -l > # Codificação UTF8, Collation pt_BR.UTF-8, CType pt_BR.UTF-8; > Já tentei > set client_encoding to 'latin-1' , to 'win1252' e o resultado é o mesmo. > > Paulo > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > Abraços -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Em 24-11-2011 15:53, Guimarães Faria Corcete DUTRA, Leandro escreveu: > 2011/11/24 Paulo Nievierowski: >> >> Bem, assim funcionava com LATIN1, mas com UTF8, parece que é >> simplesmente ignorado: >> ANA, IVA, *LORENA, MARIA... >> Qual seria a solução? > > Ou defines outro atributo, por exemplo chamado prioridade, que seria a > solução correta; ou defines uma nova ordenação no sistema operacional, > para o PostgreSQL usar. Ou faz um no ORDER BY mais ou menos com um CASE nome WHEN 'LORENA' THEN 'A' ELSE nome END. -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://guedesoft.net - http://www.postgresql.org.br http://github.net/guedes - twitter: @guediz ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
2011/11/24 Paulo Nievierowski : > > Bem, assim funcionava com LATIN1, mas com UTF8, parece que é > simplesmente ignorado: > ANA, IVA, *LORENA, MARIA... > Qual seria a solução? Ou defines outro atributo, por exemplo chamado prioridade, que seria a solução correta; ou defines uma nova ordenação no sistema operacional, para o PostgreSQL usar. > # Codificação UTF8, Collation pt_BR.UTF-8, CType pt_BR.UTF-8; > Já tentei > set client_encoding to 'latin-1' , to 'win1252' e o resultado é o mesmo. Sim, porque não é uma questão de codificação, mas de ordenação (/collation/). ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ordenação
Olá, Tenho uma lista de nomes, apresentada em ordem alfabética, tal qual: ANA, IVA, LORENA, MARIA... mas preciso que LORENA, por uma necessidade especial, seja a primeira da lista e precedo este com um asterisco: Logo, espero que resulte: *LORENA, ANA, IVA, MARIA... Bem, assim funcionava com LATIN1, mas com UTF8, parece que é simplesmente ignorado: ANA, IVA, *LORENA, MARIA... Qual seria a solução? PG 8.4.9 em Linux Mandriva #psql -l # Codificação UTF8, Collation pt_BR.UTF-8, CType pt_BR.UTF-8; Já tentei set client_encoding to 'latin-1' , to 'win1252' e o resultado é o mesmo. Paulo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ordenação em UTF8
Pessoal, Mais uma vez preciso da ajuda de vocês. Estou fazendo uma consulta com ordenação numa base UTF8 e a consulta esta ordenando primeiro as maiúsculas depois as minúsculas. Acredito que já passaram por isso, então, dicas serão bem vindas. Abraços, Prof. Luciano Schardosim Enviado via iPad pra sair... ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação equívoca do Postgres ?
Em 3 de novembro de 2010 16:54, Emerson Hermann escreveu: > /* > Olá Pessoal, > > Estou com um pequeno problema referente a ordenação do Postgres. > > O moido é o seguinte conforme script abaixo em algumas aplicações como > Excel ou BrOffice o VICTOR LUIZ% vem antes de VICTORIA DE FATIMA% mas > no Postgres versão 8.3 com client e server com codificação UTF8 está > ordenando invertido ao menos no meu caso. > > Observei que o Postgres está ordenando levando em consideração a > remoção do espaço (space), então fiz um gambiarra para resolver essa > situação que foi usar o translate no order by, porém alguem sugere uma > solução melhor ou poderia dizer o motivo de tal comportamento, > arquivos de configuração ou algo semalhante para resolver tal problema > ? > > OBS: Verifiquei que na versão do Postgres 8.4 e 9.0 não ocorre tal > comportamento. > > Desde de já agradeço a colobaração de todos. > > Cordialmente, > > Emerson Hermann > DBA > > */ > CREATE TEMP TABLE ord ( > nome VARCHAR(50) > ); > INSERT INTO ord (nome) VALUES ('VICTOR LUIZ NOBREGA DIAS DE FERIADO'); > INSERT INTO ord (nome) VALUES ('VICTORIA DE FATIMA FERREIRA DE LIMA'); > INSERT INTO ord (nome) VALUES ('ABEL ARAUJO DOS SANTOS DE CARVALHO'); > > SELECT * FROM ord ORDER BY NOME ASC; > > SELECT * FROM ord ORDER BY translate(nome,' ','0') ASC; > ___ Este assunto já foi bastante discutido nesta lista. A classificação padrão não considera espaços e alguns caracteres especiais (é como a glibc trabalha). Uma possível solução está em: http://postgresql.1045698.n5.nabble.com/ordenacao-e-libc-uma-possivel-solucao-podem-me-ajudar-a-testar-tt2025444.html#none Além da alteração do LC_COLLATE outra alternativa é usar um operador de comparação diferente para o sort, de seu exemplo: SELECT * FROM ord ORDER BY NOME USING ~<~; nome - ABEL ARAUJO DOS SANTOS DE CARVALHO VICTOR LUIZ NOBREGA DIAS DE FERIADO VICTORIA DE FATIMA FERREIRA DE LIMA (3 linhas) Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação equívoca do Postgres ?
pt_BR.UTF8 Em 3 de novembro de 2010 16:02, JotaComm escreveu: > > Olá, > Em 3 de novembro de 2010 16:54, Emerson Hermann > escreveu: >> >> /* >> Olá Pessoal, >> >> Estou com um pequeno problema referente a ordenação do Postgres. >> >> O moido é o seguinte conforme script abaixo em algumas aplicações como >> Excel ou BrOffice o VICTOR LUIZ% vem antes de VICTORIA DE FATIMA% mas >> no Postgres versão 8.3 com client e server com codificação UTF8 está >> ordenando invertido ao menos no meu caso. >> >> Observei que o Postgres está ordenando levando em consideração a >> remoção do espaço (space), então fiz um gambiarra para resolver essa >> situação que foi usar o translate no order by, porém alguem sugere uma >> solução melhor ou poderia dizer o motivo de tal comportamento, >> arquivos de configuração ou algo semalhante para resolver tal problema >> ? > > Qual o locale do seu banco? > >> >> OBS: Verifiquei que na versão do Postgres 8.4 e 9.0 não ocorre tal >> comportamento. >> >> Desde de já agradeço a colobaração de todos. >> >> Cordialmente, >> >> Emerson Hermann >> DBA >> >> */ >> CREATE TEMP TABLE ord ( >> nome VARCHAR(50) >> ); >> INSERT INTO ord (nome) VALUES ('VICTOR LUIZ NOBREGA DIAS DE FERIADO'); >> INSERT INTO ord (nome) VALUES ('VICTORIA DE FATIMA FERREIRA DE LIMA'); >> INSERT INTO ord (nome) VALUES ('ABEL ARAUJO DOS SANTOS DE CARVALHO'); >> >> SELECT * FROM ord ORDER BY NOME ASC; >> >> SELECT * FROM ord ORDER BY translate(nome,' ','0') ASC; >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > []s > -- > JotaComm > http://jotacomm.wordpress.com > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação equívoca do Postgres ?
Olá, Em 3 de novembro de 2010 16:54, Emerson Hermann escreveu: > /* > Olá Pessoal, > > Estou com um pequeno problema referente a ordenação do Postgres. > > O moido é o seguinte conforme script abaixo em algumas aplicações como > Excel ou BrOffice o VICTOR LUIZ% vem antes de VICTORIA DE FATIMA% mas > no Postgres versão 8.3 com client e server com codificação UTF8 está > ordenando invertido ao menos no meu caso. > > Observei que o Postgres está ordenando levando em consideração a > remoção do espaço (space), então fiz um gambiarra para resolver essa > situação que foi usar o translate no order by, porém alguem sugere uma > solução melhor ou poderia dizer o motivo de tal comportamento, > arquivos de configuração ou algo semalhante para resolver tal problema > ? > Qual o locale do seu banco? > > OBS: Verifiquei que na versão do Postgres 8.4 e 9.0 não ocorre tal > comportamento. > > Desde de já agradeço a colobaração de todos. > > Cordialmente, > > Emerson Hermann > DBA > > */ > CREATE TEMP TABLE ord ( > nome VARCHAR(50) > ); > INSERT INTO ord (nome) VALUES ('VICTOR LUIZ NOBREGA DIAS DE FERIADO'); > INSERT INTO ord (nome) VALUES ('VICTORIA DE FATIMA FERREIRA DE LIMA'); > INSERT INTO ord (nome) VALUES ('ABEL ARAUJO DOS SANTOS DE CARVALHO'); > > SELECT * FROM ord ORDER BY NOME ASC; > > SELECT * FROM ord ORDER BY translate(nome,' ','0') ASC; > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ordenação equívoca do Postgres ?
/* Olá Pessoal, Estou com um pequeno problema referente a ordenação do Postgres. O moido é o seguinte conforme script abaixo em algumas aplicações como Excel ou BrOffice o VICTOR LUIZ% vem antes de VICTORIA DE FATIMA% mas no Postgres versão 8.3 com client e server com codificação UTF8 está ordenando invertido ao menos no meu caso. Observei que o Postgres está ordenando levando em consideração a remoção do espaço (space), então fiz um gambiarra para resolver essa situação que foi usar o translate no order by, porém alguem sugere uma solução melhor ou poderia dizer o motivo de tal comportamento, arquivos de configuração ou algo semalhante para resolver tal problema ? OBS: Verifiquei que na versão do Postgres 8.4 e 9.0 não ocorre tal comportamento. Desde de já agradeço a colobaração de todos. Cordialmente, Emerson Hermann DBA */ CREATE TEMP TABLE ord ( nome VARCHAR(50) ); INSERT INTO ord (nome) VALUES ('VICTOR LUIZ NOBREGA DIAS DE FERIADO'); INSERT INTO ord (nome) VALUES ('VICTORIA DE FATIMA FERREIRA DE LIMA'); INSERT INTO ord (nome) VALUES ('ABEL ARAUJO DOS SANTOS DE CARVALHO'); SELECT * FROM ord ORDER BY NOME ASC; SELECT * FROM ord ORDER BY translate(nome,' ','0') ASC; ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação estranha
Vc recriou o cluster após o ajuste do LC_COLLATE ??? Tem que recriar o cluster e subir a base de dados para que isso tenha efeito... 2009/2/27 Fabrízio de Royes Mello > Interessante... e agora fui dar uma olhada em 2 instalações do postgresql > que tenho aqui na empresa e rodando o SQL mencionado tive os seguintes > resultados: > > 1) Servidor com encoding LATIN1, LC_COLLATE = pt_BR, LC_CTYPE = pt_BR > > dbsel...@servidor:~$ uname -a > Linux servidor 2.6.20-15-server #2 SMP Sun Apr 15 07:41:34 UTC 2007 i686 > GNU/Linux > > postgres=# select 'PRODUTO 1,00 MM2' > postgres-# UNION ALL > postgres-# select 'PRODUTO 10,00 MM2' > postgres-# ORDER BY 1; > ?column? > --- > PRODUTO 10,00 MM2 > PRODUTO 1,00 MM2 > (2 registros) > > postgres=# select version(); > > version > > --- > PostgreSQL 8.1.8 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2 > (Ubuntu 4.1.2-0ubuntu3) > (1 registro) > > > 2) Servidor com encoding LATIN1, LC_COLLATE = pt_BR.ISO-8859-1, LC_CTYPE = > pt_BR.ISO-8859-1 > > dbsel...@dbseller-note07:/var/www$ uname -a > Linux dbseller-note07 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 > i686 GNU/Linux > > postgres=# select 'PRODUTO 1,00 MM2' > postgres-# UNION ALL > postgres-# select 'PRODUTO 10,00 MM2' > postgres-# ORDER BY 1 > postgres-# ; > ?column? > --- > PRODUTO 1,00 MM2 > PRODUTO 10,00 MM2 > (2 registros) > > postgres=# select version(); > > version > > -- > PostgreSQL 8.1.11 on i486-pc-linux-gnu, compiled by GCC gcc-3.4 (GCC) > 3.4.6 (Debian 3.4.6-5) > (1 registro) > > > Lembro de há algum tempo atrás ter visto que existia (ou ainda existe) um > bug na glibc referente a ordenação e uma solução para o problema conforme o > link abaixo... não seria esse o problema? > > http://listas.postgresql.org.br/pipermail/pgbr-dev/2006-October/000217.html > > Agora, por falta de tempo, não fiz mais testes, mas numa das minhas > instalações (a que fez a ordenação conforme desejado) eu fiz a alteração > mencionada no link... > > > 2009/2/26 Adriano Espinoza de Oliveira > > Como tem 2 espaços na frente do 1,00 a ordem apresentada esta correta, como >> é um string, o " " vem antes do numero 1 da linha que tem 10,00Adriano >> >> >> 2009/2/26 Edson Mundin Ferreira >> >>> Estou com problema de ordenação no Postgresql >>> >>> >>> veja exemplo: >>> >>> *select 'PRODUTO 1,00 MM2' >>> UNION ALL >>> select 'PRODUTO 10,00 MM2' >>> ORDER BY 1 >>> * >>> apresentada da seguinte forma: >>> * >>> "PRODUTO 10,00 MM2" >>> "PRODUTO 1,00 MM2" >>> * >>> quando deveria ser: >>> >>> *"PRODUTO 1,00 MM2" >>> "PRODUTO 10,00 MM2" >>> * >>> observar que há 2 espaços antes do 1,00 >>> >>> estou usando postgresql instalado no linux fedora versão: >>> >>> *"PostgreSQL 8.1.9 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) >>> 4.1.1 20070105 (Red Hat 4.1.1-51)" >>> >>> *os comandos foram executados a partir do pgadmin 1.8.4 versão para >>> windows >>> >>> Agradeço a ajuda >>> >>> Édson >>> >>> >>> >>> >>> ___ >>> pgbr-geral mailing list >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > > -- > Fabrízio de Royes Mello > >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com > -- Fabrízio de Royes Mello >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação estranha
Obrigado pela dica Fabrízio mas tentei fazer conforme orientado no link, mas não resolveu o problema Édson Fabrízio de Royes Mello wrote: > Interessante... e agora fui dar uma olhada em 2 instalações do > postgresql que tenho aqui na empresa e rodando o SQL mencionado tive > os seguintes resultados: > > 1) Servidor com encoding LATIN1, LC_COLLATE = pt_BR, LC_CTYPE = pt_BR > > dbsel...@servidor:~$ uname -a > Linux servidor 2.6.20-15-server #2 SMP Sun Apr 15 07:41:34 UTC 2007 > i686 GNU/Linux > > postgres=# select 'PRODUTO 1,00 MM2' > postgres-# UNION ALL > postgres-# select 'PRODUTO 10,00 MM2' > postgres-# ORDER BY 1; > ?column? > --- > PRODUTO 10,00 MM2 > PRODUTO 1,00 MM2 > (2 registros) > > postgres=# select version(); > > version > --- > PostgreSQL 8.1.8 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2 > (Ubuntu 4.1.2-0ubuntu3) > (1 registro) > > > 2) Servidor com encoding LATIN1, LC_COLLATE = pt_BR.ISO-8859-1, > LC_CTYPE = pt_BR.ISO-8859-1 > > dbsel...@dbseller-note07:/var/www$ uname -a > Linux dbseller-note07 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC > 2009 i686 GNU/Linux > > postgres=# select 'PRODUTO 1,00 MM2' > postgres-# UNION ALL > postgres-# select 'PRODUTO 10,00 MM2' > postgres-# ORDER BY 1 > postgres-# ; > ?column? > --- > PRODUTO 1,00 MM2 > PRODUTO 10,00 MM2 > (2 registros) > > postgres=# select version(); > > version > -- > PostgreSQL 8.1.11 on i486-pc-linux-gnu, compiled by GCC gcc-3.4 (GCC) > 3.4.6 (Debian 3.4.6-5) > (1 registro) > > > Lembro de há algum tempo atrás ter visto que existia (ou ainda existe) > um bug na glibc referente a ordenação e uma solução para o problema > conforme o link abaixo... não seria esse o problema? > > http://listas.postgresql.org.br/pipermail/pgbr-dev/2006-October/000217.html > > Agora, por falta de tempo, não fiz mais testes, mas numa das minhas > instalações (a que fez a ordenação conforme desejado) eu fiz a > alteração mencionada no link... > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação estranha
Interessante... e agora fui dar uma olhada em 2 instalações do postgresql que tenho aqui na empresa e rodando o SQL mencionado tive os seguintes resultados: 1) Servidor com encoding LATIN1, LC_COLLATE = pt_BR, LC_CTYPE = pt_BR dbsel...@servidor:~$ uname -a Linux servidor 2.6.20-15-server #2 SMP Sun Apr 15 07:41:34 UTC 2007 i686 GNU/Linux postgres=# select 'PRODUTO 1,00 MM2' postgres-# UNION ALL postgres-# select 'PRODUTO 10,00 MM2' postgres-# ORDER BY 1; ?column? --- PRODUTO 10,00 MM2 PRODUTO 1,00 MM2 (2 registros) postgres=# select version(); version --- PostgreSQL 8.1.8 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu3) (1 registro) 2) Servidor com encoding LATIN1, LC_COLLATE = pt_BR.ISO-8859-1, LC_CTYPE = pt_BR.ISO-8859-1 dbsel...@dbseller-note07:/var/www$ uname -a Linux dbseller-note07 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686 GNU/Linux postgres=# select 'PRODUTO 1,00 MM2' postgres-# UNION ALL postgres-# select 'PRODUTO 10,00 MM2' postgres-# ORDER BY 1 postgres-# ; ?column? --- PRODUTO 1,00 MM2 PRODUTO 10,00 MM2 (2 registros) postgres=# select version(); version -- PostgreSQL 8.1.11 on i486-pc-linux-gnu, compiled by GCC gcc-3.4 (GCC) 3.4.6 (Debian 3.4.6-5) (1 registro) Lembro de há algum tempo atrás ter visto que existia (ou ainda existe) um bug na glibc referente a ordenação e uma solução para o problema conforme o link abaixo... não seria esse o problema? http://listas.postgresql.org.br/pipermail/pgbr-dev/2006-October/000217.html Agora, por falta de tempo, não fiz mais testes, mas numa das minhas instalações (a que fez a ordenação conforme desejado) eu fiz a alteração mencionada no link... 2009/2/26 Adriano Espinoza de Oliveira > Como tem 2 espaços na frente do 1,00 a ordem apresentada esta correta, como > é um string, o " " vem antes do numero 1 da linha que tem 10,00Adriano > > > 2009/2/26 Edson Mundin Ferreira > >> Estou com problema de ordenação no Postgresql >> >> >> veja exemplo: >> >> *select 'PRODUTO 1,00 MM2' >> UNION ALL >> select 'PRODUTO 10,00 MM2' >> ORDER BY 1 >> * >> apresentada da seguinte forma: >> * >> "PRODUTO 10,00 MM2" >> "PRODUTO 1,00 MM2" >> * >> quando deveria ser: >> >> *"PRODUTO 1,00 MM2" >> "PRODUTO 10,00 MM2" >> * >> observar que há 2 espaços antes do 1,00 >> >> estou usando postgresql instalado no linux fedora versão: >> >> *"PostgreSQL 8.1.9 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) >> 4.1.1 20070105 (Red Hat 4.1.1-51)" >> >> *os comandos foram executados a partir do pgadmin 1.8.4 versão para >> windows >> >> Agradeço a ajuda >> >> Édson >> >> >> >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Fabrízio de Royes Mello >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação estranha
Como tem 2 espaços na frente do 1,00 a ordem apresentada esta correta, como é um string, o " " vem antes do numero 1 da linha que tem 10,00Adriano 2009/2/26 Edson Mundin Ferreira > Estou com problema de ordenação no Postgresql > > veja exemplo: > > *select 'PRODUTO 1,00 MM2' > UNION ALL > select 'PRODUTO 10,00 MM2' > ORDER BY 1 > * > apresentada da seguinte forma: > * > "PRODUTO 10,00 MM2" > "PRODUTO 1,00 MM2" > * > quando deveria ser: > > *"PRODUTO 1,00 MM2" > "PRODUTO 10,00 MM2" > * > observar que há 2 espaços antes do 1,00 > > estou usando postgresql instalado no linux fedora versão: > > *"PostgreSQL 8.1.9 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) > 4.1.1 20070105 (Red Hat 4.1.1-51)" > > *os comandos foram executados a partir do pgadmin 1.8.4 versão para > windows > > Agradeço a ajuda > > Édson > > > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação estranha
Qual o LC_COLLATE do seu cluster?? De uma olhada em: http://www.postgresql.org/docs/8.1/interactive/charset.html#LOCALE 2009/2/26 Edson Mundin Ferreira > Estou com problema de ordenação no Postgresql > > veja exemplo: > > *select 'PRODUTO 1,00 MM2' > UNION ALL > select 'PRODUTO 10,00 MM2' > ORDER BY 1 > * > apresentada da seguinte forma: > * > "PRODUTO 10,00 MM2" > "PRODUTO 1,00 MM2" > * > quando deveria ser: > > *"PRODUTO 1,00 MM2" > "PRODUTO 10,00 MM2" > * > observar que há 2 espaços antes do 1,00 > > estou usando postgresql instalado no linux fedora versão: > > *"PostgreSQL 8.1.9 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) > 4.1.1 20070105 (Red Hat 4.1.1-51)" > > *os comandos foram executados a partir do pgadmin 1.8.4 versão para > windows > > Agradeço a ajuda > > Édson > > > > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Fabrízio de Royes Mello >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] ordenação estranha
Estou com problema de ordenação no Postgresql veja exemplo: select 'PRODUTO 1,00 MM2' UNION ALL select 'PRODUTO 10,00 MM2' ORDER BY 1 apresentada da seguinte forma: "PRODUTO 10,00 MM2" "PRODUTO 1,00 MM2" quando deveria ser: "PRODUTO 1,00 MM2" "PRODUTO 10,00 MM2" observar que há 2 espaços antes do 1,00 estou usando postgresql instalado no linux fedora versão: "PostgreSQL 8.1.9 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-51)" os comandos foram executados a partir do pgadmin 1.8.4 versão para windows Agradeço a ajuda Édson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação de array de inteiros [RESOLVIDO]
Bem lembrado, já havia me esquecido de acrescentar o resolvido. Obrigado. 2008/6/30 Dickson Guedes <[EMAIL PROTECTED]>: > Rúben Lício escreveu: >> Muito obrigado. >> >> Funciona perfeitamente tanto usando SELECT sort(v) quanto v := sort(v); >> >> 2008/6/30 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>: >>> Rúben Lício escreveu: Boa tarde, Tenho um array integer e preciso ordenar esse array para efetuar alguns calculos com esse resultado ordenada. Existe alguma função no PG para ordenar um array de forma ascendente? Caso não exista, alguem por acaso já tem uma SP feita para isso? >>> >>> Veja o módulo contrib/intarray em: >>> http://www.postgresql.org/docs/current/interactive/intarray.html >>> >>> sort(int[], text dir) > > > Como o Ruben fez, é sempre bom ter um feedback quando uma possivel > solução ou caminho é indicado na lista a fim de que, futuras consultas > no histórico possam indicar ao usuário se a solução é plausivel ou não. > > Para reforçar ainda mais isso é sempre bom acrescentar '[RESOLVIDO]' no > assunto do e-mail. > > ":D > > -- > []s > Dickson S. Guedes > - > Projeto Colmeia - Curitiba - PR > (41) 3254-7130 ramal: 27 > http://pgcon.postgresql.org.br > http://makeall.wordpress.com/ > http://planeta.postgresql.org.br/ > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Rúben Lício Reis Cybernet Latino América www.cybernetla.com Linux user #433535 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação de array de inteiros [RESOLVIDO]
Rúben Lício escreveu: > Muito obrigado. > > Funciona perfeitamente tanto usando SELECT sort(v) quanto v := sort(v); > > 2008/6/30 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>: >> Rúben Lício escreveu: >>> Boa tarde, >>> >>> Tenho um array integer e preciso ordenar esse array para efetuar >>> alguns calculos com esse resultado ordenada. >>> Existe alguma função no PG para ordenar um array de forma ascendente? >>> Caso não exista, alguem por acaso já tem uma SP feita para isso? >>> >> >> Veja o módulo contrib/intarray em: >> http://www.postgresql.org/docs/current/interactive/intarray.html >> >> sort(int[], text dir) Como o Ruben fez, é sempre bom ter um feedback quando uma possivel solução ou caminho é indicado na lista a fim de que, futuras consultas no histórico possam indicar ao usuário se a solução é plausivel ou não. Para reforçar ainda mais isso é sempre bom acrescentar '[RESOLVIDO]' no assunto do e-mail. ":D -- []s Dickson S. Guedes - Projeto Colmeia - Curitiba - PR (41) 3254-7130 ramal: 27 http://pgcon.postgresql.org.br http://makeall.wordpress.com/ http://planeta.postgresql.org.br/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação de array de inteiros
Muito obrigado. Funciona perfeitamente tanto usando SELECT sort(v) quanto v := sort(v); 2008/6/30 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>: > Rúben Lício escreveu: >> Boa tarde, >> >> Tenho um array integer e preciso ordenar esse array para efetuar >> alguns calculos com esse resultado ordenada. >> Existe alguma função no PG para ordenar um array de forma ascendente? >> Caso não exista, alguem por acaso já tem uma SP feita para isso? >> > > > Veja o módulo contrib/intarray em: > http://www.postgresql.org/docs/current/interactive/intarray.html > > sort(int[], text dir) > > Osvaldo > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Rúben Lício Reis Cybernet Latino América www.cybernetla.com Linux user #433535 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ordenação de array de inteiros
Rúben Lício escreveu: > Boa tarde, > > Tenho um array integer e preciso ordenar esse array para efetuar > alguns calculos com esse resultado ordenada. > Existe alguma função no PG para ordenar um array de forma ascendente? > Caso não exista, alguem por acaso já tem uma SP feita para isso? > Veja o módulo contrib/intarray em: http://www.postgresql.org/docs/current/interactive/intarray.html sort(int[], text dir) Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] ordenação de array de inteiros
Boa tarde, Tenho um array integer e preciso ordenar esse array para efetuar alguns calculos com esse resultado ordenada. Existe alguma função no PG para ordenar um array de forma ascendente? Caso não exista, alguem por acaso já tem uma SP feita para isso? Obrigado. -- Rúben Lício Reis Cybernet Latino América www.cybernetla.com Linux user #433535 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Edson Mundin Ferreira escreveu: Pedro veja se é isso que vc. quer: SELECT * FROM BAR ORDER BY CASE WHEN campo >= 'A' THEN Campo ELSE to_char(to_number(campo, ''),'') END Édson Mundin Ferreira Pedro B. Alves wrote: Salve pessoal. estou tendo um pouco de dificuldades na seguinte ocorrencia: tenho um campo de uma tabela como varchar(20); só que nesse campo é armazenado numeros "alguns contem letras, ex: ML201" só que muitos são apenas numeros. ex: 10,20,30.. etc. então gostaria que meu select retornasse ordenado esses numeros.. por exemplo, se eu usar o order by noramlmente ele me traria na seguinte ordem: campo -| 1 10 11 12 13 2 21 22 23 3 30 31 32 A.. B.. C.. D.. e assim por diante.. gostaria que ele me retornasse da seguinte forma: campo| --| 1 2 3 10 11 12 13 21 22 23 30 31 32 A.. B.. C.. e assim por diante Esta alternativa não funciona caso o campo contenha letras mas o primeiro caracter seja um algarismo, ex. '1B1C5'. Talvez esta sentença atenda (se apenas os campos contendo exclusivamente algarismos devam ser considerados como numéricos para efeito de ordenação): SELECT * FROM bar ORDER BY CASE campo ~ '[^[:digit:]+]' WHEN true THEN campo ELSE lpad(campo, 20, '0') END; []s Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Pedro veja se é isso que vc. quer: SELECT * FROM BAR ORDER BY CASE WHEN campo >= 'A' THEN Campo ELSE to_char(to_number(campo, ''),'') END Édson Mundin Ferreira Pedro B. Alves wrote: Salve pessoal. estou tendo um pouco de dificuldades na seguinte ocorrencia: tenho um campo de uma tabela como varchar(20); só que nesse campo é armazenado numeros "alguns contem letras, ex: ML201" só que muitos são apenas numeros. ex: 10,20,30.. etc. então gostaria que meu select retornasse ordenado esses numeros.. por exemplo, se eu usar o order by noramlmente ele me traria na seguinte ordem: campo -| 1 10 11 12 13 2 21 22 23 3 30 31 32 A.. B.. C.. D.. e assim por diante.. gostaria que ele me retornasse da seguinte forma: campo| --| 1 2 3 10 11 12 13 21 22 23 30 31 32 A.. B.. C.. e assim por diante alguém sabe oq eu tenho que fazer? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Fale Pedro, Cara o teu campo deve estar como string...certo? Tenta converter o string pra int dai da um order by dentro da conversão!! Acho q deve dar certo! Em 07/06/07, Pedro B. Alves <[EMAIL PROTECTED]> escreveu: Salve pessoal. estou tendo um pouco de dificuldades na seguinte ocorrencia: tenho um campo de uma tabela como varchar(20); só que nesse campo é armazenado numeros "alguns contem letras, ex: ML201" só que muitos são apenas numeros. ex: 10,20,30.. etc. então gostaria que meu select retornasse ordenado esses numeros.. por exemplo, se eu usar o order by noramlmente ele me traria na seguinte ordem: campo -| 1 10 11 12 13 2 21 22 23 3 30 31 32 A.. B.. C.. D.. e assim por diante.. gostaria que ele me retornasse da seguinte forma: campo| --| 1 2 3 10 11 12 13 21 22 23 30 31 32 A.. B.. C.. e assim por diante alguém sabe oq eu tenho que fazer? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenação
Pedro B. Alves escreveu: Salve pessoal. estou tendo um pouco de dificuldades na seguinte ocorrencia: tenho um campo de uma tabela como varchar(20); só que nesse campo é armazenado numeros "alguns contem letras, ex: ML201" só que muitos são apenas numeros. ex: 10,20,30.. etc. então gostaria que meu select retornasse ordenado esses numeros.. por exemplo, se eu usar o order by noramlmente ele me traria na seguinte ordem: campo -| 1 10 11 12 13 2 21 22 23 3 30 31 32 A.. B.. C.. D.. e assim por diante.. gostaria que ele me retornasse da seguinte forma: campo| --| 1 2 3 10 11 12 13 21 22 23 30 31 32 A.. B.. C.. e assim por diante alguém sabe oq eu tenho que fazer? Verifique se a utilização da função to_number() lhe atende. bdteste=# SELECT * FROM bar ORDER BY campo; cod | campo -+--- 1 | 1 2 | 10 3 | 11 12 | 1B1C5 4 | 2 5 | 20 6 | 21 7 | 22 8 | 3 9 | 30 10 | 31 13 | AB25 11 | ML201 (13 registros) bdteste=# SELECT * FROM bar ORDER BY to_number(campo,'9'); cod | campo -+--- 1 | 1 4 | 2 8 | 3 2 | 10 3 | 11 5 | 20 6 | 21 7 | 22 13 | AB25 9 | 30 10 | 31 12 | 1B1C5 11 | ML201 (13 registros) Repare que a função to_number() desconsidera os caracteres não-numéricos, não sei se é exatamente isso que você deseja. bdteste=# SELECT *,to_number(campo,'9') FROM bar ORDER BY to_number(campo,'9'); cod | campo | to_number -+---+--- 1 | 1 | 1 4 | 2 | 2 8 | 3 | 3 2 | 10|10 3 | 11|11 5 | 20|20 6 | 21|21 7 | 22|22 13 | AB25 |25 9 | 30|30 10 | 31|31 12 | 1B1C5 | 115 11 | ML201 | 201 (13 registros) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ordenação
Salve pessoal. estou tendo um pouco de dificuldades na seguinte ocorrencia: tenho um campo de uma tabela como varchar(20); só que nesse campo é armazenado numeros "alguns contem letras, ex: ML201" só que muitos são apenas numeros. ex: 10,20,30.. etc. então gostaria que meu select retornasse ordenado esses numeros.. por exemplo, se eu usar o order by noramlmente ele me traria na seguinte ordem: campo -| 1 10 11 12 13 2 21 22 23 3 30 31 32 A.. B.. C.. D.. e assim por diante.. gostaria que ele me retornasse da seguinte forma: campo| --| 1 2 3 10 11 12 13 21 22 23 30 31 32 A.. B.. C.. e assim por diante alguém sabe oq eu tenho que fazer? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] ORDENAÇÃO
Boas ... Seguinte Preciso fazer um select de todas as tabelas do meu BD (pg_class) , onde estas venha na seguinte ordem: As tabelas que possuam FK , devem vir após sua tabela relacionada ... (ORDEM para que no INSERT não haja problemas com chaves estrangeiras)... Ex: tenho as tabelas:pessoa, pessoa_endereco, endereco_tipo, cidade e estado. as tabelas deveriam vir na seguinte ordem : estado ou endereco tipo (Que não possuem nenhuma FK) cidade (Que possui a FK do Estado) pessoa_endereco (Que possui as FK's de endereco_tipo, cidade e estado) pessoa (Que possui FK de pessoa_endereco) * Isso é só um exemplo, pois em minha base possuo mais de 200 tabelas, quase todas elas relacionadas. Através da pg_trigger eu consigo pegar as tabelas relacionadas com o select : SELECT T.relname,(SELECT relname FROM pg_class WHERE oid = TG.tgrelid) FROM pg_trigger TG INNER JOIN pg_class T ON T.oid = TG.tgconstrrelid AND t.relname = 'pessoa' INNER JOIN pg_namespace SCH ON SCH.oid = T.relnamespace AND SCH.nspname = 'public'; Mas estou meio perdido de como montar uma função para ordenar isso... Teria que ser algo assim : SELECT * FROM pg_class ORDER BY tablenoconstraint(); ou SELECT tablenoconstraint(); Bem Desde já agradeço ... Att: Thiago Risso ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral