如果数组匹配mysql中的数组

时间:2014-03-01 03:00:39

标签: php mysql arrays

我有一个这样的数组:

  

$ search = array(5,8,9);

和这样的数据库表:

id | name   | cat
-------------------------------
1  | name1  | 1,2,3
2  | name2  | 5,8,17,25
3  | name3  | 14,21,5,19

我必须在我的(cat)数据库表中搜索($ search)。 我尝试了inFIND_N_SET,但不幸的是他们不支持数组搜索。

有没有办法在没有PHP的情况下进行,只是在MySQL?

2 个答案:

答案 0 :(得分:0)

IN比较运算符的作用类似于相等运算符。这样:

cat IN ('5','8', '9')

相当于:

( cat = '5' AND cat = '8' AND cat = '9')

或者您也可以使用REGEXP

SELECT * FROM mytable WHERE 
cat REGEXP '[[:<:]]5[[:>:]]' AND cat REGEXP '[[:<:]]8[[:>:]]' AND cat REGEXP '[[:<:]]9[[:>:]]'

还有一个选项可以使用FIND_IN_SET来查找单个ID

WHERE FIND_IN_SET('5', cat)
    AND FIND_IN_SET('8', cat)
    AND FIND_IN_SET('9', cat)

答案 1 :(得分:0)

你会这样做:

select *
from table t
where find_in_set(5, cat) > 0 and
      find_in_set(8, cat) > 0 and
      find_in_set(9, cat) > 0;

目前还不清楚您是否打算在查询中使用andor