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相同的方式,但是对于字符串。
答案 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^%')