Tôi muốn tìm kiếm trong bảng của tôi có một cột tên đầu tiên và một cột họ. Tôi hiện chấp nhận cụm từ tìm kiếm từ một lĩnh vực và so sánh nó với cả hai cột, cùng một lúc vớiSử dụng hàm mysql concat() trong mệnh đề WHERE?
select * from table where first_name like '%$search_term%' or
last_name like '%$search_term%';
này hoạt động tốt với điều kiện tìm kiếm từ duy nhất nhưng kết quả thiết lập bao gồm tất cả mọi người với cái tên "Larry". Nhưng nếu ai đó nhập tên, thì một dấu cách, sau đó họ, tôi muốn có kết quả tìm kiếm hẹp hơn. Tôi đã thử những điều sau mà không thành công.
select * from table where first_name like '%$search_term%' or last_name
like '%$search_term%' or concat_ws(' ',first_name,last_name)
like '%$search_term%';
Bạn có lời khuyên nào?
EDIT: Tên tôi đang thử nghiệm là "Larry Smith". Db lưu trữ "Larry" trong cột "first_name" và "Smith" trong cột "last_name". Các dữ liệu được sạch sẽ, không có thêm không gian và các thuật ngữ tìm kiếm được cắt trái và phải.
CHỈNH SỬA 2: Tôi đã thử câu trả lời của Robert Gamble sáng nay. Anh ấy rất giống với những gì tôi đã chạy tối qua. Tôi không thể giải thích nó, nhưng sáng nay nó hoạt động. Sự khác biệt duy nhất tôi có thể nghĩ đến là đêm qua tôi đã chạy hàm concat làm phân đoạn thứ ba hoặc "" của truy vấn tìm kiếm của tôi (sau khi xem qua first_name và last_name). Sáng nay tôi chạy nó như là phân khúc cuối cùng sau khi xem xét thông qua ở trên cũng như địa chỉ và tên doanh nghiệp.
Việc chạy một hàm mysql ở cuối truy vấn có hoạt động tốt hơn ở giữa không?
Tôi chỉ cần chạy phiên bản bạn đang gặp rắc rối với và nó hoạt động tốt đối với tôi. –