Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema con busqueda en un campo CLOB

Estas en el tema de Problema con busqueda en un campo CLOB en el foro de Oracle en Foros del Web. hola peña! Tengo un problema en una pagina de busqueda contra oracle que me esta matando. A ver si los cracks de Oracle me podeis ...
  #1 (permalink)  
Antiguo 30/05/2007, 02:32
Avatar de OzonoBCN  
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 20 años, 4 meses
Puntos: 0
Problema con busqueda en un campo CLOB

hola peña!

Tengo un problema en una pagina de busqueda contra oracle que me esta matando. A ver si los cracks de Oracle me podeis ayudar...

A grosso modo, existe un campo CLOB en la base de datos, en el que se guarda informacion serializada mediante la funcion serialize() de php

Un ejemplo del valor de un campo en la BD:
Código:
a:1:{s:8:"discount";s:21:"descuento de 20 euros";}
El caso es que tengo que hacer un buscador por este CLOB de forma que si alguien busca por ejemplo discount, saque esta y todas las que encuentre en otros registros.

Al hacer una select asi:
Código:
$inputsearch=discount (el input que usuario introduce)
select * from tabla where shop_info like '%"$inputsearch"%'
O como esta usando comodines:
Código:
$inputsearch=disco* (el input que usuario introduce)
select * from tabla where shop_info like '%"$inputsearch"%'
Ninguna me devuelve los resultados correctos, y creo que es porque oracle interpreta las comillas dobles como busqueda en modo case sensitive, cuando lo que yo quiero es que realmente busque las coincidencias que encuentre entre comillas dobles, dentro del CLOB...

La prueba de lo que digo es que en el segundo caso de select que he puesto, me lista tambien una clave llamada conditional_discount, cuando no deberia mostrarla, ya que no se buscó por *discount, sino por discount*... no se si me explico bien.

No suelo trabajar mucho con Oracle, ¿alguien sabe si es por las comillas, o sabe alguna otra solucion a esto? Si son las comillas, ¿como puedo entonces buscar con comillas dobles, o escaparlas? He probado con " pero tampoco funciona...

Muchas gracias!
Saludos ozonicos
__________________
Diseño web Barcelona
  #2 (permalink)  
Antiguo 30/05/2007, 17:25
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: Problema con busqueda en un campo CLOB

no recuerdo si sobre un clob se pueda hacer un like, en caso que si la cosa esta en no mandar esas comillas dobles a oracle ( quien sabe como las interprete ) para oracle deberia de quedar

like '%busqueda%'
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 31/05/2007, 05:33
Avatar de OzonoBCN  
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: Problema con busqueda en un campo CLOB

si que se puede si, pero resulta que el contenido esta serializado, con lo que quitar las comillas implica encontrar valores que no son los que quiero....

es decir, si busco por '%prueba%', me va a encontrar cosas como:

prueba, miramiprueba, pruebaauxiliar, ...

y por las especificaciones, SOLO deberia mostrar el prueba, el resto no porque pueden ser otros parametros que no tienen nada que ver con lo que se busca...

entonces, no se si es mas practico volcar la busqueda que tu dices kikolice a saco en un array y despues filtrar resultados segun me interese...

practico si, pero eficiente???? jejeje

lo suyo seria poder buscar las " dentro del contenido, pero parece que no las tiene en cuenta y mi calvario es que no se como ponerlo para que si las tenga en cuenta, porque me ahorraria filtrar los resultados obtenidos y ademas me traigo solo los registros buenos, no 500 mas que no sirven y ralentizan la busqueda... que opinais?
__________________
Diseño web Barcelona
  #4 (permalink)  
Antiguo 31/05/2007, 08:28
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: Problema con busqueda en un campo CLOB

parece que ya entiendo, tienes un campo con un posible valor

prueba, miramiprueba, pruebaauxiliar,

quieres sacar de esa cadena solo la palabra "prueba" y no otra palabra compuesta que pudiera traer, como "miramiprueba"

yo me iria usando este ejemplo por buscar entonces like '%prueba,%' incluyendo la coma, suponiendo que tu campo separe por comas los valores, aunque no es muy elegante podria servir
__________________
Blogzote.com :-) Mi blog
  #5 (permalink)  
Antiguo 31/05/2007, 09:46
Avatar de OzonoBCN  
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: Problema con busqueda en un campo CLOB

no no, nada que ver... es un contenido serializado (http://es2.php.net/manual/es/function.serialize.php)
en el primer mensaje he puesto un ejemplo real de como se ve el campo este que digo.

pero va por ahi la idea, solo que las claves que busco estan entre ", pero oracle parece no hacer caso de estas "... lei que sirven para hacer busquedas case-sensitive, por lo que imagino que es por eso...

comprendes la putada? no se si hay forma de escapar estas comillas para que las busque literalmente en el clob... algo similar a lo que se hace en la funcion preg_match o nose.
__________________
Diseño web Barcelona
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.