2013/12/10 Anderson Cristian <[email protected]>

> Estou com um problema sério com JSON no postgresql, quando converto um
> select para JSON por EX: "SELECT to_json(row) FROM tabela row" até ae tudo
> bem, mas quando eu tento buscar um valor dentro do JSON que seja MONEY ele
> retorna o seguinte erro: Token "R" is invalid.
>
> O PostGreSQL cria um JSON da seguinte forma quando o campo é money.
> SELECT '{"salario": R$ 1.000,00}'::json
>
> Alguém já passou por isso? Tem uma solução?
>
>
humm.... Fiz um teste bem simples aqui, e parece que estamos falando de um
bug mesmo:

postgres=# SELECT to_json(a) FROM (VALUES(1000::money)) a(salario);
        to_json
-----------------------
 {"salario":$1,000.00}
(1 row)

postgres=# SELECT to_json(a)->'salario' FROM (VALUES(1000::money))
a(salario);
ERROR:  invalid input syntax for type json
DETAIL:  Token "$" is invalid.
CONTEXT:  JSON data, line 1: {"salario":$...

Veja que ele gera:

 {"salario":$1,000.00}

Mas creio que o correto seria:

 {"salario":1000}

ou

 {"salario":"$1,000.00"}

Vou fazer uma pesquisa e se encontrar algo posto aqui. Uma solução
temporária é converter de money para numeric:

SELECT to_json(row) FROM (SELECT foo, bar, salario::numeric AS salario FROM
tabela) row

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a