Re: Consulta en 8.2 que no anda en 8.3

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Ana Smail <anasmail(at)unnoba(dot)edu(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Consulta en 8.2 que no anda en 8.3
Date: 2008-09-15 14:58:27
Message-ID: 20080915145827.GD3798@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ana Smail escribió:
> Tengo un query que hace en el where:
> AND s.sucursal ILIKE '%4%'
> En 8.2 funciona y en 8.3 dá el error:
> 7 ERROR: el operador no existe: integer ~~* unknown LINE 22:
> AND s.sucursal ILIKE "%4%" ORDER BY b.nombre, c.cuenta... ^ HINT: Ningún
> operador coincide con el nombre y el tipo de los argumentos. Puede desear
> agregar conversiones explícitas de tipos.

Prueba asi:
AND s.sucursal::text ILIKE '%4%'

(Surge la pregunta: ¿tiene sentido hacer una comparacion LIKE para
buscar un número?)

> Encontré hace un tiempo un script para agregar el casteo ímplícito, pero no
> tiene nada del like. Necesito solucionar esto desde el motor, porque no
> puedo tocar la aplicación, alguno de Uds. sabe cómo?

¿Que no puedes tocar la aplicaciÓn?? Supongo que se puede modificar los
catalogos de manera que el cast a text desde integer sea implicito, pero
no es para nada recomendable.

> Tampoco funciona: ORDER by upper(2)

Obviamente esto no funciona ... ¿cuál sería la mayúscula del número 2?
Esto debería "funcionar":
ORDER by upper('2')

--
Alvaro Herrera http://www.flickr.com/photos/alvherre/
One man's impedance mismatch is another man's layer of abstraction.
(Lincoln Yeoh)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-09-15 15:01:31 Re: Consulta
Previous Message Alfredo Guzmán 2008-09-15 14:56:32 RE: Consulta