Caro Walter,
Tente utilizar o exemplo abaixo ou uma variante dele:
select to_number('0' || '1,500.64',99999999.99)
Att.
-----Mensagem original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de [EMAIL PROTECTED]
Enviada em: quinta-feira, 6 de abril de 2006 16:08
Para: [email protected]
Assunto: Digest Brasil-Usuarios, volume 143, assunto 8
Enviar submissões para a lista de discussão Brasil-Usuarios para
[email protected]
Para se cadastrar ou descadastrar via WWW, visite o endereço
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
ou, via email, envie uma mensagem com a palavra 'help' no assunto ou corpo da
mensagem para
[EMAIL PROTECTED]
Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço
[EMAIL PROTECTED]
Quando responder, por favor edite sua linha Assunto assim ela será mais
específica que "Re: Contents of Brasil-Usuarios digest..."
Tópicos de Hoje:
1. Re: cast de '' para double (Walter Cruz)
2. Re: cast de '' para double (Walter Cruz)
3. Re: cast de '' para double (Joao)
4. Re: cast de '' para double (Walter Cruz)
5. Re: cast de '' para double (Joao)
6. Re: cast de '' para double (Euler Taveira de Oliveira)
7. Re: cast de '' para double (Ribamar Sousa)
8. Re: cast de '' para double (Joao)
9. Re: cast de '' para double (Odizon)
----------------------------------------------------------------------
Message: 1
Date: Thu, 6 Apr 2006 14:43:28 -0300
From: "Walter Cruz" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1
ahhaha !essa é boa!
Na verdade é o seguinte.. estou brincando com o postgres a algum tempo.. Estou
tentando migrar um banco do mysql e testando umas consultas que eu fazia lá..
Algumas funcionaram, mas essa específica está complicada..
São valores financeiros, guardados como varchar(!) ..
Xou te mostrar como é a linha no MySQL:
replace(replace(phis.valorInvestimento,'.',''), ',' , '.') /
(phis.familiasBeneficiadas) AS 'Valor do investimento por familia beneficiada',
isso é pra converter, digamos:
1.500,64 pra 1500.64 pra poder fazer a divisão. Só que tem alguns que são uma
string vazia...
Ou seja, eu faria o cast de uma string vazia para 0.
No postgres eu cheguei a :
cast(replace(replace(phis.valorInvestimento,'.',''), ',' , '.') AS
float) / cast(phis.familiasBeneficiadas AS integer) AS "Valor do investimento
por familia beneficiada"
mas não faz o cast do ""
(okey... um banco mal planejado é um banco mal planejado seja lá em qual banco
de dados!)
[]'s
- Walter
------------------------------
Message: 2
Date: Thu, 6 Apr 2006 14:55:19 -0300
From: "Walter Cruz" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1
exemplos: do que eu quero:
SELECT CAST('1' AS double precision);
SELECT CAST('2.7' AS double precision);
SELECT CAST('' AS double precision);
Obviamente, o terceiro cast não funciona.
------------------------------
Message: 3
Date: Thu, 6 Apr 2006 15:03:54 -0300
From: "Joao" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: <[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; format=flowed; charset="iso-8859-1";
reply-type=original
entao e isso ai mesmo
select cast('1' as double)
----- Original Message -----
From: "Walter Cruz" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, April 06, 2006 2:55 PM
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
exemplos: do que eu quero:
SELECT CAST('1' AS double precision);
SELECT CAST('2.7' AS double precision);
SELECT CAST('' AS double precision);
Obviamente, o terceiro cast não funciona.
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
------------------------------
Message: 4
Date: Thu, 6 Apr 2006 15:05:25 -0300
From: "Walter Cruz" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1
então João.. é que eu precisava castear o "" para 0!
On 4/6/06, Joao <[EMAIL PROTECTED]> wrote:
> entao e isso ai mesmo
> select cast('1' as double)
> ----- Original Message -----
> From: "Walter Cruz" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Thursday, April 06, 2006 2:55 PM
> Subject: Re: [PostgreSQL-Brasil] cast de '' para double
>
>
> exemplos: do que eu quero:
>
> SELECT CAST('1' AS double precision);
> SELECT CAST('2.7' AS double precision);
> SELECT CAST('' AS double precision);
>
> Obviamente, o terceiro cast não funciona.
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br
>
------------------------------
Message: 5
Date: Thu, 6 Apr 2006 15:15:43 -0300
From: "Joao" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: <[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; format=flowed; charset="iso-8859-1";
reply-type=original
faz um if
tipo assim
if(valor <> 0)
cast(valor as double)
else
cast('0' as double)
----- Original Message -----
From: "Walter Cruz" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, April 06, 2006 3:05 PM
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
então João.. é que eu precisava castear o "" para 0!
On 4/6/06, Joao <[EMAIL PROTECTED]> wrote:
> entao e isso ai mesmo
> select cast('1' as double)
> ----- Original Message -----
> From: "Walter Cruz" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Thursday, April 06, 2006 2:55 PM
> Subject: Re: [PostgreSQL-Brasil] cast de '' para double
>
>
> exemplos: do que eu quero:
>
> SELECT CAST('1' AS double precision);
> SELECT CAST('2.7' AS double precision);
> SELECT CAST('' AS double precision);
>
> Obviamente, o terceiro cast não funciona.
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br
>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
------------------------------
Message: 6
Date: Thu, 6 Apr 2006 14:16:10 -0400 (EDT)
From: "Euler Taveira de Oliveira" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: [email protected]
Cc: [email protected]
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain;charset=iso-8859-1
On Thu, April 6, 2006 2:05 pm, Walter Cruz said:
>> SELECT CAST('1' AS double precision);
>> SELECT CAST('2.7' AS double precision);
>> SELECT CAST('' AS double precision);
>>
Isso foi descontinuado na versão 8.1.x. Para conseguir numa versão 8.1
faça o seguinte:
bar=# create table foo (a varchar(10));
CREATE TABLE
bar=# insert into foo values('');
INSERT 2011134 1
bar=# insert into foo values('12.3');
INSERT 2011135 1
bar=# insert into foo values('14');
INSERT 2011136 1
bar=# select cast(case when a = '' then '0' else a end as double
precision) from foo;
a
------
0
12.3
14
(3 rows)
bar=#
--
Euler Taveira de Oliveira
------------------------------
Message: 7
Date: Thu, 6 Apr 2006 18:25:45 +0000
From: "Ribamar Sousa" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1
SELECT CAST (DATA AS DATE);
Em 06/04/06, Walter Cruz<[EMAIL PROTECTED]> escreveu:
> Oi povo. Tem como eu fazer esse cast no Postgres ?
>
> SELECT ('' as double)
>
> Castear(!) uma string vazia para double ?
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br
>
--
Ribamar FS - ribafs[ ]users.sourceforge.com
http://www.ribafs.tk
------------------------------
Message: 8
Date: Thu, 6 Apr 2006 15:28:52 -0300
From: "Joao" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: <[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; format=flowed; charset="iso-8859-1";
reply-type=original
SELECT CAST('1' AS double precision);
caro euler acabei de tentar o cast acima e funciona perfeiramente na versao
8.1.2...
----- Original Message -----
From: "Euler Taveira de Oliveira" <[EMAIL PROTECTED]>
To: <[email protected]>
Cc: <[email protected]>
Sent: Thursday, April 06, 2006 3:16 PM
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
On Thu, April 6, 2006 2:05 pm, Walter Cruz said:
>> SELECT CAST('1' AS double precision);
>> SELECT CAST('2.7' AS double precision);
>> SELECT CAST('' AS double precision);
>>
Isso foi descontinuado na versão 8.1.x. Para conseguir numa versão 8.1
faça o seguinte:
bar=# create table foo (a varchar(10));
CREATE TABLE
bar=# insert into foo values('');
INSERT 2011134 1
bar=# insert into foo values('12.3');
INSERT 2011135 1
bar=# insert into foo values('14');
INSERT 2011136 1
bar=# select cast(case when a = '' then '0' else a end as double
precision) from foo;
a
------
0
12.3
14
(3 rows)
bar=#
--
Euler Taveira de Oliveira
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
------------------------------
Message: 9
Date: Thu, 6 Apr 2006 16:07:37 -0300
From: Odizon <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] cast de '' para double
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Não sei a questão de performance, mas eu usaria isso:
cast(replace(replace(phis.valorInvestimento,'.',''), ',' , '.') AS
float) / case trim(phis.familiasBeneficiadas) when '' then 0 else cast(
phis.familiasBeneficiadas AS integer) AS "Valor do
investimento por familia beneficiada
Em 06/04/06, Walter Cruz <[EMAIL PROTECTED]> escreveu:
>
> Oi povo. Tem como eu fazer esse cast no Postgres ?
>
> SELECT ('' as double)
>
> Castear(!) uma string vazia para double ?
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> http://www.postgresql.org.br
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL:
http://pgfoundry.org/pipermail/brasil-usuarios/attachments/20060406/d31d0b70/attachment.html
------------------------------
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
Fim da Digest Brasil-Usuarios, volume 143, assunto 8
****************************************************
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br