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

Responder a