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

que es?... S.O.S.

Estas en el tema de que es?... S.O.S. en el foro de ASP Clásico en Foros del Web. perdonen por insistir, pero no logro solucionar esto: quiero que de la sig manera busque palabras completas en una base de datos, por eso el ...
  #1 (permalink)  
Antiguo 07/03/2003, 06:47
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 22 años, 4 meses
Puntos: 0
Exclamación que es?... S.O.S.

perdonen por insistir, pero no logro solucionar esto:

quiero que de la sig manera busque palabras completas en una base de datos, por eso el espacio en blanco entre antes o luego de los comodines.

like '% " & variable & " %' or like '% " & variable & " %'

pensé que no me mostraba algunas palabras al azar, pero al mirar mejor los resultados descubrí lo que era:

por alguna razón no reconoce como un espacio a lo que sigue luego de la última palabra de un string dentro de un campo.

puse un punto al final de todas las cadenas, luego hice un OR y coloqué la siguiente linea y funciona perfecto, pero si le saco el punto no muestra apariciones.

like '% " & variable & ". %' or like '% " & variable & ". %'

ej, si la cadena no tiene punto:

si busco rio:

me va a dar como resultado: rio de la plata, el rio seco, pero no van a aparececer aquellos campos en los cuales la última palabra sea rio ej: nos fuimos al rio

que puede estar pasando?

denme una manito please!!!!

gracias desde ya.
__________________
Juan Pablo
  #2 (permalink)  
Antiguo 07/03/2003, 09:18
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 22 años, 4 meses
Puntos: 0
Creo que con esto encontré el talón de aquiles del foro ASP

La pregunta del millón de dólares

pero prefiero que no sea asi
__________________
Juan Pablo
  #3 (permalink)  
Antiguo 07/03/2003, 09:30
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
el operador % funciona exactamente como cuando buscas un arhcivo en el explorer de windows con el *

si colocas

rio*

te buscara todas lsa palabras que comiencen con rio no importando lo que haya desdes

si colocas

*rio

te buscara todas las palabras que terminen con rio sin importar lo que haya antes

si colocas

*rio*

buscara todas las cadenas que contengan la subcadena rio no importando que vaya antes o despues.

el operador % para la clausula like es exactamente igual.

espero que haya quedado aclarada tu duda

like
  #4 (permalink)  
Antiguo 07/03/2003, 09:49
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 22 años, 4 meses
Puntos: 0
gracias!!!

yes, lo que pasa es que tengo definido un form en el cual el usuario elige si quiere buscar palabra completa, contenida o comenzando.

que encuente la palabra completa y no contenida es fundamental para mi caso, porque en la base de datos, hay cerca de 100.000
registros y si el usuario desea encontrar FITO solamente no sería practico que encuentre los por ej. 200 records con FITOGENÉTICA + 250 FITOPLANCTON + FITOQUESEYO, siendo que FITO hay uno o dos.

entendés porqué mi duda?, aparte que no es que no encuentra palabras completas, porque si, lo hace, pero si esta palabra completa esta ubicada última en la cadena, no la muesta.

ej: muestra fito y foto - pero no foto y fito.

saludos
__________________
Juan Pablo
  #5 (permalink)  
Antiguo 07/03/2003, 09:57
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
si no quieres buscar tooodas las ocurrencias de una cadena no te serviria esto

Código:
WHERE CAMPO Like  '%" & Texto & "%'
si quieres buscar al principio o al final deberias hacer un OR con dos operadores me imagino

Código:
WHERE CAMPO Like  '%" & Texto & "' OR CAMPO like '" & Texto & %"'

Bueno no se si eso servira.
  #6 (permalink)  
Antiguo 07/03/2003, 10:54
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 22 años, 4 meses
Puntos: 0
no, porque si no pongo los dos %, no encuentra los resultados que estan entre medio de una cadena:

ej. a la cadena: "FITO Y FOTO" puede que la encuentre, PORQUE FITO esta al comienzo, pero "FOTO, FITO Y FATO" no
mucho menos "FOTO Y FITO "

VIENE JODIDA LA MANO NO?, ME TENGO QUE RESIGNAR?

HABÍA PENSADO EN INGRESAR AUTOMÁTICAMENTE UN PUNTO LUEGO DE CADA TEXTO INGRESADO EN LA BD, PERO SI EL QUE INGRESA PUSO ADEMÁS UN PUNTO, NO LO VA A ENCONTRAR.

NO TENGO OTRA ALTERNATIVA.

AHORA LO QUE NO ENTIENDO PORQUE ME RECONOCE COMO BLANCO LO QUE ESTÁ ANTES DE LA PRIMER PALABRA DE UNA CADENA ('%" & )Y NO LO QUE ESTA DESPUÉS DE LA ÚLTIMA.(& "%')


LO PREGUNTE EN BASE DE DATOS TAMBIÉN, PARA VER SI ES UN DEFECTO DE ACCESS, PERO NO ME SUPIERON CONTESTAR.

Y BUE... SEGUIRÉ BUSCANDO...

GRACIAS BAKANZIPP!!!
__________________
Juan Pablo
  #7 (permalink)  
Antiguo 07/03/2003, 11:28
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 23 años, 3 meses
Puntos: 0
Entiendo que no te reconoce el espacio al final porque realmente no existe un espacio. Si el texto que está en el campo es "Fuimos todos al rio", entre al y rio existe un espacio pero después de rio no con lo cual la lógica de colocar un espacio antes del signo % fuerza que exista un espacio para que sea válida la condición. Quizás puedas agregar una condición OR con alguna combinación de la función RIGHT y LEN.
Si te sirve te paso algún ejemplo básico de lo que te estoy diciendo.
Saludos.
__________________
Leonardo D'Angelo
  #8 (permalink)  
Antiguo 07/03/2003, 11:53
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Además de lo que ldangelo bien dice, agrego que, por más que en la vista de datos de una tabla del MSAccess insertes "Fuimos todos al rio " (así, con el espacio al final), te elimina automáticamente el o los espacios que existan al final de la cadena.
  #9 (permalink)  
Antiguo 07/03/2003, 12:07
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 22 años, 4 meses
Puntos: 0
gracias dangelo, gracias dazu...

si tenés algún ejemplo me vendría barbaro.

ahora pregunto, al principio tampoco hay espacio, sin embargo

"rio de la plata" entra en la selección.

y otra cosa, es defecto de access o de todas las BD?

saludos!!!
__________________
Juan Pablo
  #10 (permalink)  
Antiguo 07/03/2003, 12:20
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 23 años, 3 meses
Puntos: 0
Ahí va el ejemplo.

Código PHP:
<%@ Language=VBScript %>
<
HTML>
<
HEAD>
<
META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</
HEAD>
<
BODY>
<!--
#INCLUDE FILE="connectionstring.inc" -->
<%
sSearch Trim(Request.QueryString("texto"))    ' Texto a buscar
lSearch = Len(Trim(sSearch)) + 1                    ' 
Longitud del texto a buscar
' Armo la variable con la sentencia SQL.
Básicamente lo que digo esrecuperá las filas cuyos n caracteres de la derecha
' sean iguales al texto a buscar.
sSQL = "Select * From Sistemas Where RIGHT(Sistema," & lSearch & ")=' " & sSearch & ""
set rs = conn.execute(sSQL)%>
<UL>
<%While NOT rs.EOF%>
    <LI><%=rs("
Sistema")%></LI>
    <%rs.MoveNext
  Wend
rs.Close
set rs = Nothing
%>
</UL>
</BODY>
</HTML> 
Vos modificalo para que la condición Where de este ejemplo, sea una condición OR que se agregue a tu query de búsqueda de palabras completas.
Respecto a que te encuentre algo al comienzo a pesar que no tiene espacio
Suerte.
__________________
Leonardo D'Angelo
  #11 (permalink)  
Antiguo 07/03/2003, 12:24
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 22 años, 4 meses
Puntos: 0
bue.. lo pruebo y mañana te contesto..

muchas gracias !!!


saludos!!!
__________________
Juan Pablo
  #12 (permalink)  
Antiguo 07/03/2003, 12:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
ldangelo, le encuentra las palabras que están al principio y no tienen espacio adelante porque que este tema viene desde aquí (en mi segundo mensaje de ese post está la explicación)
  #13 (permalink)  
Antiguo 07/03/2003, 14:40
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 23 años, 3 meses
Puntos: 0
Ahora entiendo

Ya me estaba creyendo eso de que las máquinas tienen vida propia y hacen lo que quieren
__________________
Leonardo D'Angelo
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 13:32.