Foros del Web » Programando para Internet » ASP Clásico »

buscador "LIKE" algo más preciso.

Estas en el tema de buscador "LIKE" algo más preciso. en el foro de ASP Clásico en Foros del Web. Hola amigos, Tengo un buscador que funciona con la instrucción LIKE. Pero estoy en el problema de que si hacen una búsqueda con 2 palabras, ...
  #1 (permalink)  
Antiguo 01/09/2004, 02:21
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 8 meses
Puntos: 0
buscador "LIKE" algo más preciso.

Hola amigos,

Tengo un buscador que funciona con la instrucción LIKE. Pero estoy en el problema de que si hacen una búsqueda con 2 palabras, y la primera si estaría en las búsquedas, pero la segunda no, no me muestra resultado alguno. Supongo que porque la cadena tiene que coincidir en su totalidad con alguna cadena existente en el texto en que busca.

¿Existe alguna manera de que por ejemplo, muestre resultados a partir las palabras individuales insertadas?.

Ejemplo. Si pongo en la búsqueda: "pepe pepito" y en resultados existe "pepe lópez", que me lo muestre como resultado por el echo de que contiene la palabra "pepe" (sorry por el ejemplo si es un poco tonto :))

Gracias y un saludo.

Última edición por David224; 01/09/2004 a las 02:32
  #2 (permalink)  
Antiguo 01/09/2004, 05:24
 
Fecha de Ingreso: agosto-2004
Mensajes: 33
Antigüedad: 19 años, 9 meses
Puntos: 0
joer estoy en las mismas que tu...
  #3 (permalink)  
Antiguo 01/09/2004, 05:30
 
Fecha de Ingreso: enero-2004
Mensajes: 12
Antigüedad: 20 años, 5 meses
Puntos: 0
Lo que a mi se me ocurre, aunque seguramente se puede hacer mejor de otra forma:
Por ejemplo, con dos palabras:

para conseguir las dos palabras:

palabras_cortadas = Split(palabra," ")

y teniendo las palabras en un array, entonces:

"select * from tabla where campo like '%" & palabras_cortadas(0) & "%' or campo like '%" & palabras_cortadas(1) & "%'"


Espero que os sirva.

Un saludo
  #4 (permalink)  
Antiguo 01/09/2004, 10:04
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Si, esa es la manera de hacerlo, pero surge un problema. Si ponen 3 palabras "pepe pepito pepón" la última no la va a buscar. Para solucionarlo, escribiendo el código en el aire y sin probarlo, podrías hacer algo así:


Código:
palabras_cortadas = Split(palabra," ")

SQL = "SELECT * FORM tabla WHERE campo LIKE '%" & palabras_cortadas(0)
For i = 1 to UBound(palabras_cortadas)
SQL = SQL & "%' OR campo LIKE '%" & palabras_cortadas(i)
Next
SQL = SQL & "%'"
SQL = SQL & " ORDER BY AlgunCampo"
__________________
...___...
  #5 (permalink)  
Antiguo 01/09/2004, 11:58
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 8 meses
Puntos: 0
Me da error en esta línea. Seguiré ahora buscando porqué falla:

Código:
SQL = "SELECT * FORM tabla WHERE campo LIKE '%" & palabras_cortadas(0)
El error es el siguiente:
Tipo de error:
Error de Microsoft VBScript en tiempo de ejecución (0x800A0009)
El subíndice está fuera del intervalo: '[number: 0]'
/sev/elmulticine3/buscador_noticias.asp, línea 46



Y como apunte final ¿se podría hacer esto para que buscara resultados en dos campos diferentes. Uso esta línea para usar un LIKE sencillo y que busque en dos campos:

Código:
'SQL="SELECT * FROM tabla WHERE (campo1 LIKE '%" & buscar & "%' or campo2 LIKE '%" & buscar & "%')"

Última edición por David224; 01/09/2004 a las 12:03
  #6 (permalink)  
Antiguo 01/09/2004, 12:22
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Ese error solo puede ser por que la cadena que estas utilizando para llenar palabras_cortadas esta vacia, no hay otra.
  #7 (permalink)  
Antiguo 01/09/2004, 12:37
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Bueno, no sé.. pero fijate que me eqiuvoque y puse FORM en vez de FROM
jejeje
__________________
...___...
  #8 (permalink)  
Antiguo 01/09/2004, 12:43
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 8 meses
Puntos: 0
no, no. Corregí eso e incluso le probé a poner terminaciones con comillas y demás pero sin funcionar.

Y el tema de la cadena vacía ¿pasará siempre eso cada vez que den "buscar" sin que exista texto en la caja?¿si es así, se puede solucionar?.

Muchas gracias amigos :)
  #9 (permalink)  
Antiguo 01/09/2004, 12:48
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Pues valida con javascript entes de enviar el formulario, o con ASP al recibirlo con un simple if:

cadena = request("caja")
1) if cadena<>"" Then ...rutina de dazuaga
2) if LEN(TRIM(cadena))>0 Then ..rutina de dazuaga
etc.

Si no se va por el IF puedes formar la consulta sin criterio de búsqueda para que regrese todos o no se, lo que desees.

Saludos
  #10 (permalink)  
Antiguo 01/09/2004, 13:10
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 8 meses
Puntos: 0
Bien, así lo haré.

Pero la rutina de búsqueda de 2 palabras o más me sigue sin funcionar

Además ¿es posible adaptar esa rutina para que busque en 2 campos diferentes de una misma tabla?.

Muchas gracias amigos
  #11 (permalink)  
Antiguo 01/09/2004, 13:15
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
por qué decís que sigue sin funcionar?

Si ejecutas esto:

Código:
<%
palabra = "pepe pepito pepon pez"

palabras_cortadas = Split(palabra," ")

SQL = "SELECT * FROM tabla WHERE campo LIKE '%" & palabras_cortadas(0)
For i = 1 to UBound(palabras_cortadas)
SQL = SQL & "%' OR campo LIKE '%" & palabras_cortadas(i)
Next
SQL = SQL & "%'"
SQL = SQL & " ORDER BY AlgunCampo"

Response.Write SQL
%>

Te devuelve:

Código:
SELECT * FROM tabla WHERE campo LIKE '%pepe%' OR campo LIKE '%pepito%' OR campo LIKE '%pepon%' OR campo LIKE '%pez%' ORDER BY AlgunCampo

... que es una sentencia SQL válida
__________________
...___...
  #12 (permalink)  
Antiguo 02/09/2004, 04:22
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 8 meses
Puntos: 0
Ok, ya me falta poco para poder llegar a casa y probarlo :)

Me funcionará para que haga la búsqueda en 2 campos a la vez?

Muchísimas gracias :D
  #13 (permalink)  
Antiguo 02/09/2004, 11:26
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 8 meses
Puntos: 0
Me he perdido por completo

Ni tan siquiera consigo que me funcione la primera propuesta de micropakito...
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




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