我的MySQL數據庫中有兩個字段是數組。數據類型顯示爲帶有(DC2Type:array)註釋的LONGTEXT。MySQL在數據庫數組字段中搜索值(整數或字符串)字段
例如,存儲在這一領域的整數值應該是這樣的: a:4:{i:0;i:9;i:1;i:10;i:2;i:11;i:3;i:12;}
和字符串值應該是這樣的: a:2:{i:0;s:6:"Value1";i:1;s:6:"Value2";}
我需要這些領域的這種方式讓我可以存儲可過濾的列。例如。第一個可能是年齡組,所以代表年齡段9,10,11,12。
我的查詢,則必須獲得該說是相關的10歲或在某些情況下,說我想找到那些10和11
我試過IN和FIND_IN_SET語法但也不是所有記錄返回任何結果。
使用IN
SELECT *
FROM table_name
WHERE MyField IN (10)
使用FIND_IN_SET
SELECT *
FROM table_name
WHERE FIND_IN_SET(MyField,'Value1') > 0;
我知道陣列可能不是存儲值的最佳領域,但我不想爲每個AgeGroup例如單獨的字段Age1,Age2等或每個類別(例如Value1,Value2等)
有關如何從數據庫數組字段中查找值或值的任何想法?
謝謝!
這個數據是PHP'serialize()'格式。有沒有簡單的方法直接在MySQL中處理它,你需要檢索所有的記錄,使用'unserialize()'然後在那裏測試它。 – Barmar
'FIND_IN_SET'只能使用逗號分隔值。您的字段中的值用';'分隔,而不是','。 – Barmar