2012-05-24 353 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'? –