2016-05-14 76 views
0

老實說,我不知道我的問題的正確標題,我仍然是關於查詢事項的新手。所以我有表名這樣的事件如何用逗號分隔的行中的where子句數據選擇查詢

id_event  name_event   category 
---------------------------------------------- 
    1   Market  Food,Fashion,Art 
    2   Concert    Music 
    3   FoodTruck  Food,Bevarage 

我的問題是我想選擇category =「Food,Fashion」的類別。因此,所有類別其中有「食品」和「時尚」將在外,結果是這樣

id_event  name_event   category 
---------------------------------------------- 
    1   Market  Food,Fashion,Art 
    3   FoodTruck  Food,Bevarage 

也許有人可以幫助我,謝謝你們,有一個愉快的一天! Cheerss!

+1

遺憾地說,你有一個錯誤的數據庫設計。逗號分隔的數據在字段中始終是這個標誌。請在進一步深入研究之前對其進行分類,因爲進一步下去會更困難。 – e4c5

回答

1

這樣就可以達到你想要的東西:

SELECT 
* 
FROM event 
WHERE category REGEXP CONCAT('(^|,)(', REPLACE("Food,Fashion", ',', '|'), ')(,|$)'); 

SQL FIDDLE DEMO

注: 如果你想看到在上面的查詢生成的正則表達式:

SELECT CONCAT('(^|,)(', REPLACE("Food,Fashion", ',', '|'), ')(,|$)') AS 'REGEXP'; 

結果: (^|,)(Food|Fashion)(,|$)

說明:記錄將有Food/fashioncategory只有當以下條件的人得到滿足名稱來選擇:

  • food/fashion逗號前或
  • category以開頭或
  • category結束與food/fashion

  • food/fashion具有逗號後它。

建議:

Is storing a delimited list in a database column really that bad?

+0

謝謝@ 1000111爲您的答案,再次感謝您的鏈接 – Rei

+0

非常感謝您的解釋! – Rei

+0

不客氣Sir :) – 1000111

相關問題