MySQL - 是否可以在表中的所有列上使用LIKE?

use*_*387 16 mysql where sql-like

我正在尝试创建一个简单的搜索栏,在我的数据库中搜索某些单词.可以在不使用WHERE的情况下使用LIKE属性吗?我希望它搜索所有列的关键字,而不只是一个.目前我有这个:

mysql_query("SELECT * FROM shoutbox WHERE name LIKE '%$search%' ")
Run Code Online (Sandbox Code Playgroud)

显然,只搜索带有搜索输入的名称.我试过这两个:

mysql_query("SELECT * FROM shoutbox LIKE '%$search%' ")
mysql_query("SELECT * FROM shoutbox WHERE * LIKE '%$search%' ")
Run Code Online (Sandbox Code Playgroud)

并没有奏效.这是可能的,还是有另一种方法可以解决这个问题?

JJJ*_*JJJ 15

没有捷径.您需要单独指定每个列.

SELECT * FROM shoutbox 
    WHERE name LIKE '%$search%' 
        OR foo LIKE '%$search%' 
        OR bar LIKE '%$search%'  
        OR baz LIKE '%$search%' 
Run Code Online (Sandbox Code Playgroud)

  • 我以前不知道"或".这应该完美.我很感激 (2认同)

Dav*_*ave 6

您可能还想查看MATCH()函数,例如:

SELECT * FROM shoutbox 
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search')
Run Code Online (Sandbox Code Playgroud)

您还可以为此添加布尔模式:

SELECT * FROM shoutbox 
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE
Run Code Online (Sandbox Code Playgroud)

您还可以获取相关性分数并添加FULLTEXT键以加快查询速度.

  • 产生“找不到与列列表匹配的 FULLTEXT 索引” (2认同)

小智 5

有捷径!;)

SELECT * FROM shoutbox 
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%' 
Run Code Online (Sandbox Code Playgroud)