我有一个MySQL表,其字段为unsigned tinyint
(最大值:255)。
要求的典型变化。由于该表中有大量记录,我们需要创建一个新字段。但是对于应用来说这将是非常昂贵的(很多变化,很多工作)。
所以我们正在考虑将新值与旧值结合起来。
基本上在unsigned tinyint
(最大值:255)中,我们需要存储:
要求是使用算法尽可能简单地获取和设置'组合'值。
你会怎么做? 如果可能的话,我不想使用任何二进制表示。
谢谢,
丹
答案 0 :(得分:2)
您可以使用32的倍数表示1-4并在顶部添加1-30
[1,1]将是33
[1,2]将是34
[1,30]将是62
[2,1]将是65
[2,30]将是94
[4,1]将是129
[4,30]将是158
这可行并且毫不含糊,但总的来说我真的认为你不应该像这样的黑客。添加列并更改代码。您将如何处理下一个需求变更?最后,您的软件将成为黑客的集合,无法再维护。
答案 1 :(得分:0)
让我们调用两个值x和y。
存储号码时执行以下步骤:
因此,如果x为3,而y为15,那么结果将得到315。您可以通过首先从数字中提取最后两位数字然后除以100来轻松解码,这将为您提供第一个数字。
但是因为你必须在255之内拟合数字,你可以选择一个小于100的适当乘数。