我的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