2012-04-06 20 views
15

Sto lavorando con un database esistente che ha nome e cognome separati nel database. Devo creare una funzione che richiederà un input di ricerca e restituirà risultati. dire che la mia base di dati ha una struttura come ....Ricerca nome completo o nome o cognome nel database MySQL con nome e cognome in colonne separate

nameFirst nameLast 
Joe  Smith 
Joe  Jones 
Joe  Brown 

Come potrei, utilizzando MySql, prendere un ingresso di ricerca che è dire 'Joe Smith' e solo ottenere la sua fila? Ma se inserisco solo "Joe" nel campo di ricerca, li restituisco tutti? Avrò bisogno di esplodere la corda con uno spazio? Grazie!

+0

fai è anche bisogno di trovare 'Smith, Joe', o 'Joseph Smith'? – Randy

+1

L'esplosione della stringa è un modo per andare, ma cosa succede se c'è una iniziale o un nome centrale coinvolti? – dqhendricks

+0

Probabilmente la ricerca sarà come 'Joe Smith' ... inoltre ci sono alcuni esempi nel database dove ci sono .Jrs e tali –

risposta

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

Assicuratevi di validare i parametri presentati qualsiasi utente, come "Joe"

+8

Questo probabilmente sarebbe piuttosto lento su un grande tavolo .. –

+2

Ho usato il codice di attivazione activerecord ma ecco cosa Ho finito per usare ... $ term = $ search_array ['term']; $ query = $ this-> db-> query ("SELECT * FROM Database WHERE CONCAT (nameFirst, '', nameLast) LIKE '% $ term%'"); –

+1

ha funzionato per me. –

Problemi correlati