在我的应用中,用户可以选择多个过滤器选项。我将它存储在数据库表中。
例如
用户1可以选择过滤器A ^ B
用户2可以选择过滤器AORC ^ D. 等等。
它存储在Db中的方式是
user filter_selected
user1 A^B
user2 AORC^D
现在标准是用户不能选择相同的过滤器。因此,如果用户3选择A ^ B或B ^ A,则应该抛出错误。
我正在努力想出一个智能逻辑来在javascript中验证这一点。 一种方法是通过DB中的所有用户(可以是很多)并按字母顺序排序并检查它是否相同。所以在我们的例子中,A ^ B和B ^ A将是相同的AB ^。这样我可以检查。任何其他更好的方法可能是使用mysql命令本身?
答案 0 :(得分:1)
您可以根据字符对过滤规则进行排序,然后将其插入即可 例如,B ^ A将转换为AB ^,当您想要检查时,您可以对过滤器进行排序,然后进行搜索
如果你想要一个原始的过滤器,你不关心数据库的大小,你更关心速度,你可以将原始文件保存为另一个列。如果你关心数据库的大小,你可以只是保存原始过滤器,当您要搜索时选择与过滤器长度相同的行,然后您需要按字母顺序排序,或者您可以保存每个过滤器字符的索引,例如当您将A ^ B更改为AB ^时,您可以保存这个过滤器AB ^ | 021,但这需要更多的空间,就像原始列一样,我不建议这种方法。如果您的过滤器总是很小,您也无法获取所有记录并与所有记录进行比较。你可以创建过滤器的所有可能方式(例如AB ^ A ^ B B ^ A BA ^ ^ AB ^ BA)但是你必须要小心,因为在这种方法中你创建了n!字符串,这根本不好,只是因为太小的字符串就可以了,当数据库中有太多记录时,这种方法可能很好