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

Busqueda expansiva?

Estas en el tema de Busqueda expansiva? en el foro de Bases de Datos General en Foros del Web. Buenas, estoy usando un script en ajax que busca en una base de datos, los datos los obtengo de esta forma: Código PHP: $conexion = ...
  #1 (permalink)  
Antiguo 01/03/2010, 15:35
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 3 meses
Puntos: 14
Busqueda expansiva?

Buenas, estoy usando un script en ajax que busca en una base de datos, los datos los obtengo de esta forma:

Código PHP:
$conexion=mysql_query("SELECT %nombre% FROM usuarios ");

       
      
$aUsers = array();
   
      while( 
$row mysql_fetch_assoc$conexion ) ) {
   
      
$aUsers[] = "{$row['nombre']}";
   
      } 
El problema es que solo empeiza a buscar por el principio del nombre y yo lo que quiero es que busque por aproximaxión osea si el user es manuel y pongo nuel que me meuestre a seleccionar Manuel.

Primero quiero probar a hacerlo meidante la base de datos que creo que se puede con las opciones %% pero no sé usarla correctamente. Gracias.
  #2 (permalink)  
Antiguo 01/03/2010, 15:40
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Busqueda expansiva?

Código SQL:
Ver original
  1. SELECT nombre FROM usuarios WHERE nombre LIKE '%nombre_a_buscar%'
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 01/03/2010, 16:34
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Busqueda expansiva?

Como que nombre a buscar? quiero que me busque ente todos los nombre no sé si me explico...osea que me busque en toda la base de datos.
  #4 (permalink)  
Antiguo 01/03/2010, 16:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Busqueda expansiva?

Entonces usa expresiones regulares:
Código MySQL:
Ver original
  1. SELECT nombre
  2. FROM usuarios
  3. WHERE nombre REGEXP  '%nombre_a_buscar%'
Donde nombre_a_buscar es un texto que tu ingreses para buscar.
En el contexto de lo que estás proponiendo, te aclaro, (osea si el user es manuel y pongo nuel que me meuestre a seleccionar Manuel), LIKE y REGEXP darían el mismo resultado, cosa que posiblemente hubieses notado con solo probar la sentencia.
La diferencia es que LIKE requiere que el texto a buscar se encuentre si o si en los resultados, mientras que REGEXP devuelve aquellos en los que haya una mayor o menor coincidencia.

Por ejemplo: LIKE te hubiese dado resultado si hubieses ingresado "nuel", como decías. Pero no te lo devolvería si lo ingresado a buscar hubiese sido "nual". REGEXP si.

Para una mejor aclaración, te recomiendo leer el manual de referencia:

12.3.1. Funciones de comparación de cadenas de caracteres

3.3.4.7. Coincidencia de patrones
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: busquedas
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 17:29.