viernes, 20 de diciembre de 2013

Transformar Clob a Varchar2 en Oracle

Muchas veces te encuentras por misterios de la naturaleza que nadie comprende que en una tabla se está guardando un string de pequeñas dimensiones en un clob.

Si necesitas hacer alguna búsqueda con él, la manera más sencilla es la siguiente:
select * from tabla_misteriosa t where dbms_lob.substr(t.campo_clob,length(t.campo_clob),1) = 'abcdefg';

Si lo que hay dentro del campo_clob tiene un tamaño menor de 4000 caracteres no tendrás ningún problema; pero si es mayor y menor de 32767 caracteres todavía te queda otro camino relativamente facil: usar pl/sql en vez de sql

declare
   ristra varchar2;
begin
   for t in ( select * from tabla_misteriosa )
   loop
       ristra  := dbms_lob.substr( t.campo_clob, length(t.campo_clob), 1 );
       -- Via libre a lo que quieras hacer con ristra

No hay comentarios:

Publicar un comentario