2011-02-24 43 views
4

假設我想搜索用戶'Richard Best'。有可能比較全名是連接的名字和姓氏嗎?我沒有全名字段。將值與條款中的連接字段進行比較

select * from users where last_name + ' ' + first_name like '%richa%' 

我使用的是MySQL

+0

我們有了一個更好的辦法來檢查... – 2011-02-24 18:18:50

回答

9

這些相當於:

select * from users where concat(last_name,' ',first_name) like '%richa%' 

select * from users where concat_ws(' ',last_name,first_name) like '%richa%' 

這也可能工作:

select * from users where last_name like '%richa%' or first_name like '%richa%' 
+0

兩個命題是不等價的: 隨着「加斯奎特」,與「理查德·G」的搜索將不會與工作你的第二個解決方案,因爲「理查德G」不匹配的名字或姓氏! – nlassaux 2014-10-26 15:17:46

+0

@ Nico401我不知道你在說什麼。我堅持認爲'concat(A,'',B)'concat_ws('',A,B)'是等價的。另一方面,如果你試圖使用非concat語法匹配'like'%Richard G%'',那麼這樣做不會太好,duh。 – awm 2014-10-27 02:05:28

+0

對於concat和concat_ws等價,我很確定。但是連接和你的第三個命題(與OR)不是等價的。如果您編寫姓氏和名字的一部分,concat解決方案將工作,儘管OR解決方案不會。 – nlassaux 2014-10-28 21:13:13

0
select * from users where (first_name + ' ' + last_name) like '%richa%' 
相關問題