mysql查询WHERE IF和FIND_IN_SET()函数



我一直在使用以下查询:

 "SELECT * FROM mytable WHERE IF(FIND_IN_SET(column1,'$searchString') > 0,1,0) 
+ IF(FIND_IN_SET(column2, '$searchString') > 0, 1, 0) 
+ IF(FIND_IN_SET(column3, '$searchString') > 0, 1, 0)+ 
IF(FIND_IN_SET(column4, '$searchString') > 0, 1, 0) > 0";

那么(在情况下)在4次成功匹配之后,查询是否变为以下内容??:

"SELECT * FROM mytable WHERE 1+1+1+1 > 0";

请确认我的假设是否正确。

通常情况下,您会对or进行这种类型的比较,除非您真的想要计数匹配:

SELECT *
FROM mytable
WHERE (FIND_IN_SET(column1, '$searchString') > 0 OR
       FIND_IN_SET(column2, '$searchString') > 0 OR 
       FIND_IN_SET(column3, '$searchString') > 0 OR
       FIND_IN_SET(column4, '$searchString') > 0
      );

是的,但是你可以把它变短

SELECT * FROM mytable 
WHERE 
(
    FIND_IN_SET(column1, '$searchString') > 0 +
    FIND_IN_SET(column2, '$searchString') > 0 + 
    FIND_IN_SET(column3, '$searchString') > 0 + 
    FIND_IN_SET(column4, '$searchString') > 0
) > 0

最新更新