Pequena dúvida de sql

6 respostas
G

Preciso urgentemente de que me esclareçam uma pequena dúvida…

Num select, como faço para “mascarar” um campo com uma vírgula… Ex.: “9,999” …

Estou fazendo isso mas está exibindo com ponto… Ex.: “9.999” …

SELECT CAMPO.CAMPO_CP_CAMPO, CAMPO.CAMPO_CP_CODIGO,
CAMPO.CAMPO_CP_VALOR, FROM CAMPO WHERE CAMPO.CAMPO_CP_CAMPO = ?

o formato de CAMPO_CP_VALOR é 9,999
mas ele tá trazendo 9.999

Obrigado…

6 Respostas

S

Olá,

até tem como, mas sabe aquela de camadas, especialização, etc?

Deixe as “apresentações” para o hora certa. Um sgbd é isso mesmo, um sgbd, não um editor de texto!

você pode deixa-lo fazer seu trabalho sossegado e, a partir do Resultset gerado, fazer algo assim:

Resultset rs = stmt.executeQuery(SELECT …”);



System.out.println ( NumberFormat.getInstance().format( rs.getDouble(CAMPO_CP_VALOR) );
G

Tá, mas e pra formatar um campo que se usa a vírgula mas que não é um valor monetário…??? O que eu usaria…???

Ex.: 9,999999999

M

“spier”:
Olá,

até tem como, mas sabe aquela de camadas, especialização, etc?

Deixe as “apresentações” para o hora certa. Um sgbd é isso mesmo, um sgbd, não um editor de texto!

você pode deixa-lo fazer seu trabalho sossegado e, a partir do Resultset gerado, fazer algo assim:

Resultset rs = stmt.executeQuery(SELECT …”);



System.out.println ( NumberFormat.getInstance().format( rs.getDouble(CAMPO_CP_VALOR) );</blockquote>

Discordo totalmente.

Fazendo isso voce simplesmente transfere o load desnecessariamente, faz sub-uso da linguagem SQL e ainda perde em performance.

Usa o formatador nativo do SGBD que usar, creio que o SQL ANSI (padrão necessário para se fazer um SGBD) especifica que o SQL tenha isso (e com um nome X, que não sei qual é)…

Enfim, checa de acordo com seu BD…www.mysql.com ou mssql server tem no programa o help…access tb…

G

Bom, obrigado pelas respostas mas eu só quero uma forma deu colocar a vírgula no lugar do ponto no select que quando executo a query está aparecendo com ponto (9.9999) e eu quero com vírgulA (9,9999) …

M

rs.getString(“CAMPO_CP_VALOR”).replace(’.’, ‘,’)

Simples e absurdamente porco.

Mal dá pra chamar esse tipo de coisa de programação, mas creio que resolva seu problema…só não deixe ninguém ver esses absurdos no código :slight_smile:

S

Realmente porco. E não contribui em nada para a transparência. Se estará sempre tendo que presumir a configuração de um sgbd!

Como coloquei na minha primeira msg, Java tem sua maneira de fazer as coisas de maneira simples, elegante e transparente.

Quando você considera

NumberFormat.getInstance().format( )

um " load desnecessario" talvez esteja sugerindo uma programação estilo espaguetti no main{}, abrindo mão de quaisquer objetos, já que também poderemos considerá-los “loads desnecessários”?

Por outro lado, minha mensagem anterior me parece muito clara ao sugerir que não se fizesse o que você considera

(e aqui quero extender o termo ao java também)

Strings e os métodos de manipulá-las são, de longe, o que mais consome processador, seja no sgbd, seja no código do programa. Quando tentamos formatar um double como o exemplo da msg original transformando-o em uma string (toString) para então percorrer posição por posição, estamos colocando no lixo nossas aulas de fundamentos da computação :cry:

Finalmente, se para você for mais fácil

ou depender de um dba, seja na sua empresa, ou onde seu bd estiver hospedado, para que SEU aplicativo funcione a contento, é uma escolha sua.

Eu não acho que qualquer esforço que possamos fazer para manter a independência do ambiente seja algo porco, muito pelo contrário!

spier

PS
Ghost-in-the-shell,

os métodos

NumberFormat.getInstance().format( rs.getDouble(“CAMPO_CP_VALOR”)

servem para campos de tipo numérico com decimais, independente de se representar moeda, percentual, o que for. Para outros tipos, como datas, basta substituir o método Resultset.getDouble pelo correspondente!

Criado 23 de setembro de 2004
Ultima resposta 27 de set. de 2004
Respostas 6
Participantes 3