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
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 |