假設我想搜索用戶'Richard Best'。有可能比較全名是連接的名字和姓氏嗎?我沒有全名字段。將值與條款中的連接字段進行比較
select * from users where last_name + ' ' + first_name like '%richa%'
我使用的是MySQL
假設我想搜索用戶'Richard Best'。有可能比較全名是連接的名字和姓氏嗎?我沒有全名字段。將值與條款中的連接字段進行比較
select * from users where last_name + ' ' + first_name like '%richa%'
我使用的是MySQL
這些相當於:
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%'
兩個命題是不等價的: 隨着「加斯奎特」,與「理查德·G」的搜索將不會與工作你的第二個解決方案,因爲「理查德G」不匹配的名字或姓氏! – nlassaux 2014-10-26 15:17:46
@ Nico401我不知道你在說什麼。我堅持認爲'concat(A,'',B)'concat_ws('',A,B)'是等價的。另一方面,如果你試圖使用非concat語法匹配'like'%Richard G%'',那麼這樣做不會太好,duh。 – awm 2014-10-27 02:05:28
對於concat和concat_ws等價,我很確定。但是連接和你的第三個命題(與OR)不是等價的。如果您編寫姓氏和名字的一部分,concat解決方案將工作,儘管OR解決方案不會。 – nlassaux 2014-10-28 21:13:13
select * from users where (first_name + ' ' + last_name) like '%richa%'
我們有了一個更好的辦法來檢查... – 2011-02-24 18:18:50