SQL InnoDB 为一个 LIKE 值检查多列

SQL InnoDB Checking multiple columns for one LIKE value

我正在尝试在其中一列中查找字符串的一部分(单词、单词、单词、单词)。

我试过了

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)

您可以使用或条件对多个列进行点赞

  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','%')

你能试试这个吗:

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