Обсуждение: String concatenation work in version 8.2.11 and 8.3.6

Поиск
Список
Период
Сортировка

String concatenation work in version 8.2.11 and 8.3.6

От
Tony Liao
Дата:
hi,all
      for example tableA
      create table tableA (
       id serial,
       a integer,
       b integer,
       c integer
      );
      insert into tableA (a,b,c) values (12,34,56);

then,
      select id from tableA where (a||b||c)=123456;
      in postgresql version 8.2.11,it works.
      but in postgresql version 8.3.6,the error as bellow:
       ERROR:  operator does not exist: integer || integer
       LINE 1: select id from tableA where (a||b||c)=123456;
                                      ^
       HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

is it a bug in 8.2.11 or I install 8.3.6 not completely?

Re: String concatenation work in version 8.2.11 and 8.3.6

От
Julius Tuskenis
Дата:
Hi Tony,

Its not a bug - automatic casting was removed in 8.3. You should cast( a
as text)||cast(b ... = cast(123456 as text). Other option is to define
your own operators which is to be used only in case you can not fix
clients of your database...

Tony Liao rašė:
> hi,all
>       for example tableA
>       create table tableA (
>        id serial,
>        a integer,
>        b integer,
>        c integer
>       );
>       insert into tableA (a,b,c) values (12,34,56);
>
> then,
>       select id from tableA where (a||b||c)=123456;
>       in postgresql version 8.2.11,it works.
>       but in postgresql version 8.3.6,the error as bellow:
>        ERROR:  operator does not exist: integer || integer
>        LINE 1: select id from tableA where (a||b||c)=123456;
>                                       ^
>        HINT:  No operator matches the given name and argument type(s).
> You might need to add explicit type casts.
>
> is it a bug in 8.2.11 or I install 8.3.6 not completely?


--
Julius Tuskenis
Programavimo skyriaus vadovas
UAB nSoft
mob. +37068233050


Re: String concatenation work in version 8.2.11 and 8.3.6

От
Tony Liao
Дата:
thanks,Julius.
       

2009/2/26 Julius Tuskenis <julius@nsoft.lt>
Hi Tony,

Its not a bug - automatic casting was removed in 8.3. You should cast( a as text)||cast(b ... = cast(123456 as text). Other option is to define your own operators which is to be used only in case you can not fix clients of your database...

Tony Liao rašė:

hi,all
     for example tableA
     create table tableA (
      id serial,
      a integer,
      b integer,
      c integer
     );
     insert into tableA (a,b,c) values (12,34,56);

then,
     select id from tableA where (a||b||c)=123456;
     in postgresql version 8.2.11,it works.
     but in postgresql version 8.3.6,the error as bellow:
      ERROR:  operator does not exist: integer || integer
      LINE 1: select id from tableA where (a||b||c)=123456;
                                     ^
      HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

is it a bug in 8.2.11 or I install 8.3.6 not completely?


--
Julius Tuskenis
Programavimo skyriaus vadovas
UAB nSoft
mob. +37068233050