朋友们,
我有一个奇怪的需要,无法思考我的问题.由于关键字回收,优秀而强大的Google几乎没有帮助(正如您所见).你能帮我吗?
我想要做的是将多种类型的数据存储在MySQL的单个列中.
这是一个等同于C联合的数据库(如果你搜索MySQL和Union,你显然在SQL中的UNION关键字上得到了很多东西).
[随后简化案例]因此,让我们说我们有人 - 有名字 - 和STORMTROOPERS - 有TK号码.您不能同时拥有名称和TK编号.你要么是BOB SMITH - 或者 - TK409.
在CI中可以将其表达为联盟,如下所示:
union {
char * name;
int tkNo;
} EmperialPersonnelRecord;
Run Code Online (Sandbox Code Playgroud)
这使得它,这样我要么存储一个指向字符数组或在类型EmperialPersonnelRecord的ID,但不是两者.
我在列上寻找MySQL等价物.我的列将存储int,double或varchar(255)(或任何组合).但只占用最大元素的空间.
这可能吗?
(当然,只要有足够的时间,金钱和意志,任何事情都是可能的 - 我的意思是,如果我是穷人,懒惰并且在截止日期之前有可能......也就是"开箱即用")
正如 a1ex07 所说,您可以通过存储字符串表示来做到这一点。但如果您担心空间问题,则将实际值存储在多个可为 NULL 的列中可能会节省更多空间。
或者,创建辅助表并标准化,例如
您的愿望:
表格1 |id|姓名或TK#|
你可以做:
表格1 |id|姓名|TK|
或者你可以做
表格1 |id|ST_or_ human_flag|人类和冲锋队共有的其他列 表2 - 人类姓名 |id|姓名| 表3 - TKs_of_ST |id|TK|