gpt4 book ai didi

mysql - 在mysql中存储整数数组

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:37 32 4
gpt4 key购买 nike

我有一张表,我想在其中存储所选日期(周日至周六)的列表,但为了简单起见,我想存储为 1 到 7 的整数。

通过一些研究,我发现了两种“正确”处理此问题的方法。

为每一天创建 bool 列...“星期一”=“假”,如果没有选择等。

我真的不喜欢这个...太多的列

另一种方法是有一个只包含复合键的表

例如day_event

dayID eventID

所以如果

事件 1 有第 1 2 3 天

事件 2 有第 2 5 天,它会是这样的

day : event
1 : 1
2 : 1
2 : 2
3 : 1
5 : 2

然后我就可以从 day_event 中选择 *,其中 eventID = 2 等等,以获取我的天数列表....但我真的也不喜欢这个……所有这些只是为了存放几天?

对我来说,有一个像“days”这样的字符串列,分别像“1,2,3”和“2,5”,似乎更简单,更实用,因为错误可能是这样。

还有其他解决方案吗?

最佳答案

您可以将其存储为 SET column定义为: 创建表 table_name (

    /* ... */

`column_name`SET(
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday',
'Sunday'
),

/* ... */
);

集合就像一个位掩码,因此(例如)星期一和星期三可以在列值中同时处于事件状态。

集合的总长度限制为 64 位(即 64 个值)——在您的情况下这不是问题。

在您的情况下,SET 类型非常合适,因为您甚至可以用很少的开销按此列进行过滤(与其他选项相比,字符串广告表几乎是 0 开销)。

SELECT *
FROM `table_name`
WHERE `column_name` = 'Monday,Wednesday'

关于mysql - 在mysql中存储整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23817712/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com