2014-01-27 71 views
1

我有列ProjectTab和它的值是:8,10,12,14(varchar) - 它可以分配給多個選項卡。 有沒有辦法讓where語句可以說在ProjectTab = 10的地方搜索? 我試過,但沒有工作:使用where語句與varchar字段的MySQL查詢

SELECT * FROM `ProjectTabs` 
WHERE ProjectTab IN (10) 

Like運算符是不能解決問題的。它可能是但我的領域必須是,8,10,12,14,和運營商應該是這樣的WHERE ProjectTab LIKE'%,10,%' 我認爲這很糟糕.. 請幫助。

+0

這是否對你的工作? SELECT * FROM'ProjectTabs' WHERE ProjectTab IN('10','12') – wruckie

+0

它的確吸引人,因爲將逗號分隔列表干擾到關係數據庫中是糟糕的設計。 –

+0

你應該看看數據庫規範化。這就是你如何正確處理這個設計問題 –

回答

3

雖然這是糟糕的設計,你應該考慮這個重構,MySQL將挖你出這個洞與FIND_IN_SET的:

SELECT * FROM `ProjectTabs` 
WHERE FIND_IN_SET('10', ProjectTab); 

sqlfiddle:http://sqlfiddle.com/#!2/045d1/1

+0

謝謝,這對我來說工作得很好。 我意識到,逗號分隔的列表是不好的設計,但我繼承了該項目,現在我什麼也做不了。 謝謝。 – Trayan