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


How to combine two value of two column in a table.

是否有办法从下面的表中选择数据?

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

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

就像facebook搜索引擎一样,当我输入一个全名时,它会显示结果,即使全名包含不间断的空格。

你可以使用mysql的CONCAT()函数

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

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

请参阅此处查看更多深入的文档

是的,使用CONCAT()函数,如下所示:

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

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

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

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

您将使用CONCAT函数。请记住,这可能会有很差的性能,因为它不能正确地使用索引。

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

您可以使用CONCAT_WS:

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

当然要记得转义输入(或者使用预处理语句)