Jackson wrote:

> Nesta nova versão não aceita mais valores dentro da instrução IN que não 
> seja string? ou tem alguma confirguração no servidor que corrigi isto?
> 
Sem configurações desta vez. Isso era um bug pois o servidor estava
fazendo a conversão de texto para inteiro implicitamente ao passo que o
padrão é fazê-la explicitamente.
O exemplo abaixo ilustra as possíveis soluções. Particularmente prefiro
a solução 1 porque "você dá a César o que é de César", ou seja, se o
tipo da coluna 'a' é texto eu vou usar texto para comparar no IN. A
solução 2 pode trazer resultados inesperados.

regression=# select * from foo where a in (2,4);
ERROR:  IN types character varying and integer cannot be matched
regression=# select * from foo where a in ('2','4');
 a | b
---+----
 2 | 30
 4 | 30
 2 | 40
(3 rows)

regression=# select * from foo where a::int in (2,4);
 a | b
---+----
 2 | 30
 4 | 30
 2 | 40
(3 rows)

regression=#


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a