1

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

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

例如:

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

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

4

5 回答 5

2

肯定有 - 你可以使用 mysqlCONCAT()功能 -

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

CONCAT()函数可以接受许多参数,引用的字符串作为它们的文字值,并且字段名称从被查询的表中评估为它们的值。因此fname,并且lname必须是数据库中字段的实际名称。

有关更深入的文档,请参见此处

于 2013-04-01T15:39:37.913 回答
1

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

SELECT * FROM profile WHERE CONCAT(fname,' ',lname) LIKE '%$name%'
于 2013-04-01T15:38:51.493 回答
0

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

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

或者

SELECT * FROM profile WHERE CONCAT_WS(' ', fname, lname) LIKE '%$name%'
于 2013-04-01T15:39:04.827 回答
0

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

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

于 2013-04-01T15:39:11.903 回答
0

您可以使用CONCAT_WS

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

当然要记住转义输入(或使用准备好的语句)。

于 2013-04-01T15:39:15.170 回答