2011-08-20 5 views
6

Tôi đang gặp một số sự cố khi tìm kiếm bất kỳ kết quả tương tự nào trong hai trường. Ví dụ tôi có một bảng với các giá trị:Ký tự đại diện LIKE với nhiều trường và không gian trong MYSQL

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

etc etc. 

Tôi muốn có thể để có được kết quả "Ford, Mustang (Shelby)" bằng cách tìm kiếm cho bất kỳ kết hợp sau đây:

  • Ford
  • Mustang
  • Shelby
  • Ford Mustang

    hoặc bất kỳ kết hợp nào khác.

Điều này có khả thi không? Tôi đã có một tìm kiếm tốt nhưng thật khó để tìm các cụm từ tìm kiếm để mô tả những gì tôi có ý nghĩa.

Trả lời

7

Tách điều khoản của bạn trên khoảng trắng và sau đó, cho mỗi học kỳ, xây dựng một chút của SQL như thế này:

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

Sau đó, tham gia tất cả những người có or để có được của bạn Mệnh đề WHERE. Vì vậy, cho "Shelby Ford", bạn muốn kết thúc với SQL như thế này:

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

Nếu bạn cần bất cứ điều gì phức tạp hơn sau đó điều tra full-text search khả năng của MySQL.

+0

Nó tìm kiếm được một chút phức tạp hơn nhưng tôi nghĩ rằng bạn đang phải về tìm kiếm toàn văn, tôi đã không nhìn vào đó. Cảm ơn bạn đã dành thời gian giúp tôi. – penpen

2

này cung cấp cho một thử:

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%' 

Không chắc chắn về cú pháp chính xác kể từ khi tôi không có ở nhà nhưng một cái gì đó tương tự nên làm việc.

Xem thêm: Using mysql concat() in WHERE clause?

+0

Cảm ơn, đã thử nhanh nhưng không nhận được bất kỳ đâu. Hãy suy nghĩ tôi sẽ có một cái nhìn gần hơn khi tôi có được một cơ hội – penpen