现有一个选择项,比如“大家喜欢的编程语言”,有5个可选项,比如 java , c, php ,c++ ,vc 。如果这个选择项是单选的话,那很简单,把选项对应的序号,比如1-5,写入数据库,数据表的字段也可以设置成int,并且加上索引,这样检索的速度会很快。但如果这个选项是多选的话,怎么处理呢?
最常规的做法,是把选中的多个项目用分隔符相连,写入数据库。
如下 写入的内容是
“,1,3,”
“,2,3,”
“,1,2,3,”
“,2,3,5”等等
这样数据表的字段就不能是int了,必须是char了。
并且在检索所有喜欢php的人 的sql 只能用
字段 like '%,2,%' 了这样的效率肯定不高。请问大家有没有什么好办法,对付这些把复选框数据写入数据库,然后做检索的!!谢谢!!!
最常规的做法,是把选中的多个项目用分隔符相连,写入数据库。
如下 写入的内容是
“,1,3,”
“,2,3,”
“,1,2,3,”
“,2,3,5”等等
这样数据表的字段就不能是int了,必须是char了。
并且在检索所有喜欢php的人 的sql 只能用
字段 like '%,2,%' 了这样的效率肯定不高。请问大家有没有什么好办法,对付这些把复选框数据写入数据库,然后做检索的!!谢谢!!!
如果userid=100 的人 选择了 c 和 php
我就在数据库里面写入
insert into aaa (userid,item) values ('100','2');
insert into aaa (userid,item) values ('100','3');两条记录,这样会非常方便的找到喜欢php的所有人的id。这个办法我也想到了,但现在还有个棘手的问题,就是,我录入数据库时,不止这一个复选框,还有几个复选框.比如,还有一个选择,大家喜欢的度假地,也是多选 北京 上海 杭州 西藏 新疆。
我现在数据库想搜索 喜欢杭州和php的人
我不可能在数据库里面存入n*m条记录啊
大家多讨论讨论啊,
谢谢。主要是解决数据库的效率问题!!
那么,可以这样:假设选项是 1北京 2上海 3杭州 4西藏 5新疆
选择的是 1、3 数据库字段记录field时,'10300';
选择 2、3、5 ,记录成 '02305';查询选择了 4西藏的,sql server中就是 substring(filed, 4, 1) = '4'效率相对于使用like要高一点