Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/05/2007, 02:32
Avatar de OzonoBCN
OzonoBCN
 
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 21 años
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