Oracle - Cadena dentro de un campo LONG

 
Vista:

Cadena dentro de un campo LONG

Publicado por Maritza (1 intervención) el 26/08/2004 21:33:42
Hola!

Podrían decirme como puedo buscar una cadena de caracteres dentro de un campo LONG?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cadena dentro de un campo LONG

Publicado por Jorge-DBA (123 intervenciones) el 27/08/2004 00:33:56
Mensaje 1 de 2

Hola Maritza

Existen algunos caminos ya que no puedes hacer un "SELECT" con un operador like en un campo long.

1) El camino mas rápido es alterar la tabla con el campo LONG y convertirlo a CLOB

Esta es la documentación de Oracle CLOB
Single-byte character data Up to 2^32 - 1 bytes, or 4 gigabytes

Ejemplo:

SQL> create table tab_log (uno number(1), dos long);

Tabla creada.

SQL> insert into tab_long values (1,'Hola esto es un texto muy extenso');
1 fila creada.
SQL> insert into tab_long values (2,'El TEXTO QUE ESTA EN ESTE MOMENTO INSERTADO ES DE 2 GIGABYTES');
1 fila creada.
SQL> commit;

SQL> select * from tab_long;

UNO DOS
__________ _____________________________________________________________
1 Hola esto es un texto muy extenso
2 El TEXTO QUE ESTA EN ESTE MOMENTO INSERTADO ES DE 2 GIGABYTES

SQL> SELECT * FROM tab_log WHERE DOS LIKE '%TEXTO%';
ORA-00932: tipos de dato inconsistentes: se esperaba NUMBER se ha obtenido LONG

SQL> alter table tab_long modify CLOB;
Tabla modificada.

SQL> select * from tab_long where dos like '%TEXTO%';
UNO DOS
__________ ______________________________________________________________
2 El TEXTO QUE ESTA EN ESTE MOMENTO INSERTADO ES DE 2 GIGABYTES

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadena dentro de un campo LONG

Publicado por Jorge-DBA (123 intervenciones) el 27/08/2004 00:41:43
Mensaje 2 de 2

Continiuación...

2)

La otra opción si es que no deseas alterar tu tabla de campo "LONG" a "CLOB" es realizar un PL/Sql que seleccione todo el campo long y lo convierta a varchar2.

3)

Otra opción es que desde SQLPLUS realices un spool lo mandes a un archivo de salida de texto, y con el editor de texto que elijas edites el archivo y busques la cadena de caracteres.

--

Desde mi punto de vista si tu aplicación usa muchos campos LONG, te enfrentas a problemas similares, en un futuro te recomendaría que en lugar de usuar campos LONG instales "INTERMEDIA TEXT", y puedes crear índices de texto y puedes hacer consultas mucho mas robustas con tu cláusula Where, como por ejemplo que busques diferentes cadenas de palabras en una sola sentencia.

Suerte Maritza, espero que te ayude en algo lo que te acabo de explicar en los 2 mensajes.

Saludos.

Jorge-DBA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadena dentro de un campo LONG

Publicado por DIEGO ARMANDO (1 intervención) el 24/05/2011 03:26:34
me gustaria saber si ustedes pueden ayudarme en esto. Tengo una variable tipo CLOB, dentro del texto de la variable existen algunos parametros. Quisiera saber si es posible sustituir esos parametro dentro del CLOB por algunas otras variables.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar