有时候经常会遇到下拉框的多个值存在一个表的字段,如果这样设计查询的话可能比较麻烦。因为你查询的话,选择任何一个下拉框的里面的值,查询出来的结果集应该是只要包含里面一个值就查询出来这条记录。
想了很多办法,最后采用二进制的形式设计,解决了这个查询。
下拉框里面的值:
1:方案商,2:生产厂商,3:经销商,4:代理商,5:其他
如果你要查询一个下拉框的值,比如你要查询 2 生产厂商这个值,前端可以采用英文“,”分隔来接收。
如果你要查询 2:生产厂商 ,可以转换为 0010这个二进制的值。
当前这条记录行业角色为 1:方案商,2:生产厂商,3:经销商,4:代理商,转换为二进制就是 1111的形式。
根据二进制的特性,二进制进行与运算,如果与这个值等于自己,说明这条记录符合查询,就刷选出来了这条记录。
Oracle 里面的查询形式为:and bitand(o.PURCHASE_USE_NUM,#{purchaseUseNum})=#{purchaseUseNum}。
我一般设计有两个字段,比如行业角色我会设计为二进制转换为数字的字段PURCHASE_USE_NUM和下拉框选项的字段值,比如当前记录有4条选项 1:方案商,2:生产厂商,3:经销商,4:代理商,保存为 PURCHASE_USE_NUM保存为 15, PURCHASE_USE_CODE保存为1,2,3,4.
上面就是我采用的方式,如果有更好的方式请指点。