2011-08-20 8 views
6

Ho difficoltà a cercare corrispondenze simili in due campi. Per esempio ho una tabella con i valori:LIKE carattere jolly con più campi e spazi in MySQL

CAR MAKE CAR MODEL 
Ford  Mustang (Shelby) 
Toyota  Corolla 
Seat  Leon 

etc etc. 

voglio essere in grado di ottenere il risultato "Ford, Mustang (Shelby)" attraverso la ricerca di una qualsiasi delle seguenti combinazioni:

  • Ford
  • Mustang
  • Shelby
  • Ford Mustang

    o qualsiasi altra combinazione.

È possibile? Ho avuto una buona ricerca ma è difficile trovare i termini di ricerca per descrivere cosa intendo.

risposta

7

Split i termini su spazi e poi, per ogni termine, a costruire un po 'di SQL come questo:

car_make like '%x%' or car_model like '%x%' 

quindi unire tutti coloro che or per ottenere la vostra Dove la clausola. Così per "Shelby Ford", che ci si finisce con SQL come questo:

select stuff 
from cars 
where car_make like '%Shelby%' 
    or car_model like '%Shelby%' 
    or car_make like '%Ford%' 
    or car_model like '%Ford%' 

Se avete bisogno di qualcosa di più complicato poi indagare full-text search funzionalità di MySQL.

+0

Sembra essere un po 'più complicato di così, ma penso che tu abbia ragione riguardo alla ricerca full-text, non l'avevo esaminato. Grazie per aver dedicato del tempo per aiutarmi. – penpen

2

dare una prova:

SELECT Car_Make, Car_Model, CONCAT_WS(' ', Car_Make, Car_Model) as Make_Model 
FROM cars 
WHERE CONCAT_WS(' ', Car_Make, Car_Model) LIKE '%Ford Mustang%' 

Non sono sicuro della sintassi esatta dal momento che non sono in casa, ma qualcosa di simile dovrebbe funzionare.

Consulta anche: Using mysql concat() in WHERE clause?

+0

Grazie, ha dato una prova veloce ma non arrivare da nessuna parte. Penso che darò un'occhiata più da vicino quando avrò la possibilità – penpen