Подтвердить что ты не робот

MySQL. Можно ли использовать LIKE для всех столбцов в таблице?

Я пытаюсь создать простую панель поиска, которая просматривает мою базу данных для определенных слов. Можно использовать атрибут LIKE без использования WHERE? Я хочу, чтобы он просматривал все столбцы для ключевых слов, а не только один. В настоящее время у меня есть:

mysql_query("SELECT * FROM shoutbox WHERE name LIKE '%$search%' ")

Который, очевидно, ищет только имена с поисковым вводом. Я попробовал оба из них:

mysql_query("SELECT * FROM shoutbox LIKE '%$search%' ")
mysql_query("SELECT * FROM shoutbox WHERE * LIKE '%$search%' ")

и никто не работал. Это что-то, что возможно или есть другой способ сделать это?

4b9b3361

Ответ 1

Возможно, вы захотите также просмотреть функцию MATCH(), например:

SELECT * FROM shoutbox 
WHERE MATCH('name', 'foo', 'bar') AGAINST ('$search')

Вы также можете добавить к этому логический режим:

SELECT * FROM shoutbox 
WHERE MATCH('name', 'foo', 'bar') AGAINST ('$search') IN BOOLEAN MODE

Вы также можете получить оценки релевантности и добавить ключи FULLTEXT для ускорения запросов.

Ответ 2

Там нет ярлыка. Вы должны указать каждый столбец отдельно.

SELECT * FROM shoutbox 
    WHERE name LIKE '%$search%' 
        OR foo LIKE '%$search%' 
        OR bar LIKE '%$search%'  
        OR baz LIKE '%$search%' 

Ответ 3

Там есть ярлык! ;)

SELECT * FROM shoutbox 
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%' 

Ответ 4

это больше не будет отображать повторяющиеся строки.

SELECT * FROM shoutbox 
WHERE (name LIKE '%$search%' 
    OR foo LIKE '%$search%' 
    OR bar LIKE '%$search%'  
    OR baz LIKE '%$search%')