我一直在使用以下查询:
"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