Thread: Unable to identify a right operator '>=' for type 'bpchar'

Unable to identify a right operator '>=' for type 'bpchar'

From
Michael Ma
Date:
Hi,

While running the following SQL statement in postgresql-7.0-1 via
JDBC,
  select a.cus_code, a.dlv_code, b.cus_abbr, a.dlv_abbr,         a.address, a.tel, a.fax, a.contact    from dlv_point
a,customer b   where ((a.cus_code >= ? and a.cus_code <= ?)         or (b.cus_abbr >= ? and b.cus_abbr <= ?))     and
trim(b.cus_code)= trim(a.cus_code)   order by 1 ;
 

I got the following error message:
  Unable to identify a right operator '>=' for type 'bpchar'  You may meed to add parentheses or an explicit cast.

I have never got this kind of message from Informix or Oracle.

The data type of the fields in the above statement are all char(n).

Can anyone help?

The system I am using is Red Hat Linux 6.2 with Kernel 2.2.14-6.1.1 on
an i586

Thanks in advance.

Michael


Re: Unable to identify a right operator '>=' for type 'bpchar'

From
Tom Lane
Date:
Michael Ma <mikema@ficnet.net> writes:
> While running the following SQL statement in postgresql-7.0-1 via
> JDBC,

>    select a.cus_code, a.dlv_code, b.cus_abbr, a.dlv_abbr,
>           a.address, a.tel, a.fax, a.contact
>      from dlv_point a, customer b
>     where ((a.cus_code >= ? and a.cus_code <= ?)
>           or (b.cus_abbr >= ? and b.cus_abbr <= ?))
>       and trim(b.cus_code) = trim(a.cus_code)
>     order by 1 ;

> I got the following error message:

>    Unable to identify a right operator '>=' for type 'bpchar'
>    You may meed to add parentheses or an explicit cast.

It looks to me like the parser is thinking that "a.cus_code >= ?"
must represent application of a suffix operator '>=' followed by
application of another suffix operator '?'.  Which is indeed about
the only way it could make any sense of the expression.

I assume you were expecting something to get substituted for the '?'
marks before the query is submitted, but it evidently didn't happen ...
        regards, tom lane


It is solved and closed now.

Thanks