2013-04-10 67 views
-2

值有在表中存儲這樣MySQL的逗號分隔在單個字段中

id | coulumname 
1 | Mahendra Singh Dhoni, R Ashwin, 1 or none, None of the above 
2 | Murali Vijay, R Ashwin, 2, Albie Morkel 
3 | Murali Vijay, R Ashwin, 1 or none, None of the above 

現在我想查詢像從上述列僅匹配值4個逗號分隔值(字段不完全匹配

讓我們這樣「[R阿什溫,1或無,上述沒有」這三個值中的兩列(第一和第三)匹配,我怎麼可以編寫查詢這一點,是否有任何可能這種方式只使用查詢而不是編程?

回答

2

那麼那些這兩行具有以相同的順序精確的字符串,所以你可以做

coulumname LIKE '%R Ashwin, 1 or none, None of the above%' 

如果他們可以在任何順序和在開始或結束時,你可能會需要一個正則表達式,並這將是一個更容易分裂值來搜索

coulumname RLIKE '(^|,)R Ashwin(,|$)' -- same with other two 

通過我會考慮重新設計或許這逗號分隔值分裂成另一個表的方式。

+0

jinx!很好的答案 – shaunhusain 2013-04-10 05:56:07

+1

非常好!第二個工作,謝謝! 只做了一小小的改變,因爲逗號之間的空格 '(^ |,)R Ashwin(,| $)' – agurchand 2013-04-10 06:13:03

1

嘗試select id, columnname from tbl where columnname like '%R Ashwin, 1 or none, None of the above%'

爲了將來的參考,使用fiddle使這種探索更容易。