在mysql中将两列合并为一列

时间:2011-03-17 06:39:24

标签: php mysql

假设我有一个包含列的表:

`id`,`firstname`,`lastname`

有些行如:

'1','bob','marley'
'2','mary','jane'

我有一个像这样的搜索查询(其中'bob marley'是我的搜索词):

select * where
(`firstname` like 'bob marley%')
or
(`lastname` like 'bob marley%')

但是,如果我搜索“bob”或“marley”,而不是'bob marley',这只会受到影响 如何连接两列以匹配搜索词?

编辑: 该表将有数十万行,因此性能至关重要。 concat()是否足够高效,可以在延迟按键调用的ajax搜索中工作?或者我应该重新设计我的表格或添加全文列进行搜索?

2 个答案:

答案 0 :(得分:10)

使用MySQL的CONCAT功能:

SELECT * FROM tablename WHERE CONCAT(firstname, ' ', lastname) LIKE 'bob marley%'

答案 1 :(得分:4)

这会破坏您的查询效果,但您可以使用concat_ws将它们与中间的空格合并。

select *
from tbl
where concat_ws(' ', firstname, lastname) like '%bob marley%'

请注意,我已{strong>切换您的right-sided-%double-sided-%。当使用marley搜索时,这是必要的,'marley%'将不匹配。