SQL在同一字段中搜索多个值

Nir*_*ana 25 mysql search

我正在构建一个简单的搜索算法,我想用空格打破我的字符串,并在其上搜索我的数据库,如下所示:

$search = "Sony TV with FullHD support";  
$search = explode( ' ', $search );

SELECT name FROM Products WHERE name LIKE %$search[1]% AND name LIKE %$search[2]% LIMIT 6
Run Code Online (Sandbox Code Playgroud)

这可能吗?

提前致谢

Gli*_*ire 47

是的,您可以使用SQL IN运算符搜索多个绝对值:

SELECT name FROM products WHERE name IN ( 'Value1', 'Value2', ... );
Run Code Online (Sandbox Code Playgroud)

如果您想使用LIKE,则需要使用OR:

SELECT name FROM products WHERE name LIKE '%Value1' OR name LIKE '%Value2';
Run Code Online (Sandbox Code Playgroud)

使用AND(正如您所尝试的)要求所有条件都为真,使用OR要求至少有一个为真.


cod*_*biz 5

尝试这个

使用 UNION

$sql = '';
$count = 0;
foreach($search as $text)
{
  if($count > 0)
     $sql = $sql."UNION Select name From myTable WHERE Name LIKE '%$text%'";
  else
     $sql = $sql."Select name From myTable WHERE Name LIKE '%$text%'";

  $count++;
}
Run Code Online (Sandbox Code Playgroud)

使用 WHERE IN

$comma_separated = "('" . implode("','", $search) . "')";  // ('1','2','3')
$sql = "Select name From myTable WHERE name IN ".$comma_separated ;
Run Code Online (Sandbox Code Playgroud)