Re: sobre ILIKE

From: Juan Martínez <jeugenio(at)umcervantes(dot)cl>
To: Walter Corpos <wcorpos(at)yahoo(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: sobre ILIKE
Date: 2006-08-09 17:51:51
Message-ID: 44DA20B7.6000207@umcervantes.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Walter Corpos escribió:
> he creado un aplicacion web con java que logra guardar archivos en la base de datos postgresql 8.0, para esto utilizo large object
> los archivos son guardados en una tabla pg_largeobject en un campo bytea
> los archivos son guardados como texto plano

Entonces por que no usaste TEXT?

> asi que lo que quiero es buscar en ese texto plano cualquier palabra
> cuando hago la siguiente consulta:
>
> SELECT loid FROM pg_largeobject WHERE data LIKE '%[palabra a buscar]%'
>
> me da un resultado satisfactorio
>
> pero ahora quiero que buscar la misma palabra sin considerar mayusculas ni minisculas, para esto me dijeron usara ILIKE, pero esto no funciona para el tipo de dato bytea, cuando hago otra consulta:
>
> SELECT loid FROM pg_largeobject WHERE data ILIKE '%[palabra a buscar]%'
>
> me sale el siguiente error:
>
> ERROR: operator does not exist: bytea ~~* "unknown"
> HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts.

El error es claro. ILIKE no funciona sobre bytea.

Una solucion parche seria:

SELECT loid
FROM pg_largeobject
WHERE upper(data) ~~ '%'||upper('texto_a_buscar')||'%';

Ciertamente, lo logico seria cambiar el tipo de dato a TEXT, o trabajar
con SIMILAR TO (con regexp)

--
Juan Martinez G.
Departamento de Informatica
Universidad Miguel de Cervantes

In response to

  • sobre ILIKE at 2006-08-09 15:59:02 from Walter Corpos

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Parra Hernández Maritza Graciela (Teniente) 2006-08-09 17:52:03 RE: postgres y java
Previous Message Iván - EcRed 2006-08-09 17:15:01 Re: postgres y java