SQL InnoDB Проверка нескольких столбцов на одно значение LIKE

Я пытаюсь найти части строки (слово, слово, слово, слово) в одном из столбцов.

Я старался

SELECT * FROM table WHERE LIKE '$string%' IN (col1, col2, col3, col4, etc)

но я получаю фатальную ошибку, говорящую мне, что синтаксис неправильный около LIK.

Можно ли сделать это? и если да, то что я испортил?

Если я правильно понял, альтернативой было бы взорвать строку и сделать foreach, чтобы проверить их все по отдельности?

$array = explode(',', $string);

foreach ($array as $string)
SELECT * FROM table WHERE MATCH (col1, col2, col3, col4, etc) AGAINST $string)

1

Решение

Вы можете сделать подобное для нескольких столбцов, используя или условие

  SELECT *
FROM table
WHERE col1 LIKE concat($string.'%'  or col1 LIKE concat('%','$string','%')
OR col2 LIKE concat($string.'%'  or col2 LIKE concat('%','$string','%')
OR col3 LIKE concat($string.'%'  or col3 LIKE concat('%','$string','%')
OR col4 LIKE concat($string.'%'  or col4 LIKE concat('%','$string','%')
OR etc.... coln LIKE concat($string.'%'  or coln LIKE concat('%','$string','%')
0

Другие решения

Можете ли вы попробовать это:

SELECT * FROM table WHERE CONCAT(col1, ' , ', col2, ' , ' col3, ' , ', col4, ' , ', etc) LIKE '$string%'
0

По вопросам рекламы [email protected]