我正在尝试在数据库中查找ID。我需要找到以下内容:

17
,17
,17,

确保找不到以17开头的其他ID(即170、171、173等)。目前,我已经设置了以下变量以放入mysql查询中:

$userid = '' . $row['userid'] . ',%';
$userid2 = '%,' . $row['userid'] . '%';
$userid3 = '' . $row['userid'] . '%';


但是我发现我也在输入id170。我认为每当id 170放在字符串末尾时,它就会发生。您能提供的任何帮助,我将不胜感激。这是我正在使用的查询:

"SELECT formid, draft, activestatus
 FROM forms
 WHERE notifyusers like '$userid'
 AND activestatus != '3' OR notifyusers like '$userid2' AND activestatus != '3'
 OR notifyusers like '$userid3' AND activestatus != '3'";

最佳答案

您可以使用FIND_IN_SET函数,如下所示:

SELECT formid, draft, activestatus
FROM forms
WHERE
  (FIND_IN_SET('17', notifyusers)>0 AND activestatus != '3')
  OR ...


或者您可以通过以下方式使用LIKE:

WHERE
  CONCAT(',', notifyusers, ',') LIKE ('%,17,%')

07-24 09:27