2012-05-24 236 views
0

在我的MySQL表中,我有一个名为member_id的列。这列存储的值是这样的:需要帮助mysql查询

1,2,3,4,5 

我需要检查,通过使用

SELECT * 
FROM member 
WHERE 5 IN member_id 

它都不尽如人意。请帮我写一个SQL查询,它会找到合适的结果。

+0

发布一些你试过的代码并试着更好地解释你想要达到的效果 –

+0

你应该在这里提供更具体的信息。请提供表格模式和确切的查询,以及“不太好”的更具体定义。 –

+0

我试图整理他的帖子,但它目前正在等待同行评议,我也投票给他,因为downvoting只是意味着。 –

回答

7

使用此查询:

SELECT * 
FROM mytable 
WHERE FIND_IN_SET(5, member_id) 
+0

我不是超级熟悉MySQL ,但是你不想做类似'WHERE FIND_IN_SET(5,member_id)> 0'吗?也许MySQL会将'> 0'的所有内容评估为真实,但这并不是明确要求的。 –

+0

真的吗? 我确定他只是需要SELECT * FROM mytable WHERE member_id = 5 ... 但是再次,我可能错了,因为这个问题很不清楚...... – MrSoundless

+0

+1最好的方式在MySQL – RedFilter

0
SELECT * FROM member WHERE member_id LIKE '%5%' 
+1

这会匹配'15'或'50'。 – Quassnoi

+0

是的,我意识到这一点,我不知道该列中的值的范围是什么,它适用于他的发布示例,我不知道它比任何更复杂 – Gratzy

1

Quassnoi的方法适用于MySQL的,但对于一个便携式的跨平台技术,你可以这样做:

select * 
from member 
where member_id = '5' 
    or member_id like '5,%' 
    or member_id like '%,5,%' 
    or member_id like '%,5' 

这是假设有数据中没有额外的空白。

+0

如果我有'55,1'&'8,5,5, 6'作为输入我会在执行查询后都有两行? –

+0

@FahimParkar号您认为哪一个条款可以匹配第一个案例? – RedFilter

+0

不是'member_id like'5,%''不会考虑'55,1'? –