我想搜索我的表有一列名字和一列姓氏。我目前接受來自現場搜索詞,它在時間在WHERE子句中使用mysql concat()?
select * from table where first_name like '%$search_term%' or
last_name like '%$search_term%';
這正常工作與單個詞的搜索字詞但結果集包括每個人的名稱爲「拉里」與之比較的兩列,一個。但如果有人輸入名字,然後是空格,然後是姓,我想要一個更窄的搜索結果。我試過以下沒有成功。
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%';
有什麼建議嗎?
編輯:我測試的名字是「拉里史密斯」。 db在「first_name」列中存儲「Larry」,在「last_name」列中存儲「Smith」。數據很乾淨,沒有額外的空間,搜索詞左右裁剪。
編輯2:今天早上我試了羅伯特寶寶的答案。他和我昨晚的跑步非常相似。我無法解釋它,但今天早上它可以工作。我能想到的唯一區別就是昨天晚上我將concat函數作爲我的搜索查詢的第三個「或」段(在查看first_name和last_name之後)運行。今天早上,我在查看以上內容以及地址和商業名稱後,將其作爲最後一部分。
在查詢結束時運行mysql函數是否比中間運行得更好?
我只是跑你遇到問題的版本,它爲我工作得很好。 – 2008-11-20 13:12:43