场景:我说有4个复选框,用户可以选择任意组合的复选框(他们也有权不选择一个复选框).我必须将这4个选项存储到单个列中.我认为最好的选择是使用二进制表示存储
option1 has the constant value 1
option2 has the constant value 2
option3 has the constant value 4
option4 has the constant value 8
Run Code Online (Sandbox Code Playgroud)
因此,如果客户选择option2和option4,则存储在DB中的值将为2 + 8,即:10,如果客户选择option1,option4和option8,则值为1 + 4 + 8,即13.
另外当我从mysql查询时我可以使用
Select * from option_table where (option & 4)=4;
Run Code Online (Sandbox Code Playgroud)
如果我想检索选择了option3的行.
但由于某种原因,我无法使用这种方法,或者只是说我需要知道将这些多个值存储在一个列中的下一个最佳选择是什么?
另一种选择可能是乘以素数.要选择,您可以选择将素数的模数加到列的值为0的列.
例:
值1:2
值2:3
值3:5
值4:7
值2和3将是3*5 = 15
值1,2,3,4将是2*3*5*7 = 210
要获取值1所在的行,请选择位置 value % 2 == 0