2012-04-06 10 views
15

Estoy trabajando con una base de datos existente que tiene el primer nombre y el apellido separados en la base de datos. Necesito crear una función que tome una entrada de búsqueda y devuelva resultados. decir que mi base de datos tiene una estructura como ....Búsqueda de nombre completo o nombre o apellido en la base de datos MySQL con nombre y apellido en columnas separadas

nameFirst nameLast 
Joe  Smith 
Joe  Jones 
Joe  Brown 

¿Cómo podría, utilizando MySQL, toma una entrada de búsqueda que es decir 'Joe Smith' y acaba de obtener su fila? Pero si pongo solo 'Joe' en el campo de búsqueda, ¿devolverlos todos? ¿Tendré que explotar la cadena con un espacio? ¡Gracias!

+0

hace también necesita encontrar 'Smith, Joe' o 'José Smith'? – Randy

+1

Explosionar la cadena es una forma de hacerlo, pero ¿qué ocurre si hay una segunda inicial o nombre involucrado? – dqhendricks

+0

La búsqueda probablemente sería como 'Joe Smith' ... también hay alguna instancia en la base de datos donde hay .Jrs y tal –

Respuesta

34
SELECT * 
FROM table 
WHERE CONCAT(nameFirst, ' ', nameLast) LIKE '%Joe%' 

Asegúrese de desinfectar los parámetros presentados cualquier usuario, como "Joe"

+8

Esto probablemente sería bastante lento en una tabla grande .. –

+2

Utilicé codeigniter activerecord pero esto es lo que Terminé usando ... $ term = $ search_array ['term']; $ query = $ this-> db-> query ("SELECT * FROM Database WHERE CONCAT (nameFirst, '', nameLast) LIKE '% $ term%'"); –

+1

funcionó para mí. –

Cuestiones relacionadas