如何在表中组合两列的两个值。

时间:2013-04-01 15:37:26

标签: php mysql sql

有没有办法从下表中选择数据?

SELECT * FROM profile WHERE fname+" "+lname LIKE '%$name%'

例如:

fname = "Lady"
lname = "Gaga"
$name = "lady g" is match

就像facebook搜索引擎一样,当我输入一个全名时,它会显示结果,甚至包括非破坏空间的全名。

5 个答案:

答案 0 :(得分:2)

确定 - 你可以使用mysql CONCAT()函数 -

SELECT * FROM profile WHERE CONCAT(fname," ",lname) LIKE '%$name%'

CONCAT()函数可以使用许多参数,引用的字符串作为其文字值,字段名称从被查询的表中计算其值。因此fnamelname必须是数据库中字段的实际名称。

请参阅here for some more in-depth documentation

答案 1 :(得分:1)

是的,请使用CONCAT()功能,如下所示:

SELECT * FROM profile WHERE CONCAT(fname,' ',lname) LIKE '%$name%'

答案 2 :(得分:0)

在MySQL中,您需要使用CONCAT()CONCAT_WS()来连接两个对象。

SELECT * FROM profile WHERE CONCAT(fname, ' ', lname) LIKE '%$name%'

OR

SELECT * FROM profile WHERE CONCAT_WS(' ', fname, lname) LIKE '%$name%'

答案 3 :(得分:0)

您可以使用CONCAT功能。请记住,这可能会导致性能不佳,因为它不能正确使用索引。

SELECT * FROM profile WHERE CONCAT(fname," ",lname) LIKE '%$name%'

答案 4 :(得分:0)

您可以使用CONCAT_WS

SELECT * FROM profile WHERE CONCAT_WS(' ', fname, lname) LIKE '%' . $name . '%'

当然要记住要逃避输入(或使用prepared statements)。