php的in_array的mysql对应物

时间:2015-04-06 06:40:11

标签: php mysql

SELECT * FROM conversations WHERE chatMembers LIKE '%1%'AND chatMembers LIKE '%10%'

对话表

id | chatMembers | conversation
1  |  1^10       | .......
2  |  1^100      | .......
3  |  10^100     | .......

列chatMembers包含该对话中涉及的userIds。 我想从会话表中只选择带有userIds 1和10的行,但上面的查询会返回所有行,甚至是包含10和100的行等等。

我想的是一种与php的in_array相同的方式,但是对于字符串。

2 个答案:

答案 0 :(得分:0)

当您在两侧使用%时,这意味着您正在选择字符串中包含1和10的任何行。所以100还包含1和10(字符串格式),因此被选中。

SELECT * FROM conversations WHERE ( 
 chatMembers LIKE '%^1^%' 
   OR 
 chatMembers LIKE  '%^1' 
  OR 
 chatMembers LIKE  '1^%' )
 AND(
  chatMembers LIKE '%^10^%' 
   OR 
 chatMembers LIKE  '%^10' 
  OR 
 chatMembers LIKE  '10^%' )

答案 1 :(得分:0)

请尝试这样,

SELECT * FROM conversations WHERE (chatMembers LIKE '%1^%' or chatMembers LIKE '%^1%' or chatMembers LIKE '%^1^%')AND (chatMembers LIKE '%10^%' or chatMembers LIKE '%^10%' or chatMembers LIKE '%^10^%')