我有一些使用bit
数据类型的列。最终用户现在需要N / A选项,所以在我使用一点捕获“是/否”(1是是,0是否)之前,我现在需要具有三个选项,可以存储是/否/ NA就像varchar
。
有没有一种方法可以将列的数据类型从更改bit
为varchar
AND并且还可以将当前记录数据更新为0,将我更改为“否”,将1更改为“是”?
为什么不仅仅用NULL
“ n / a”来表示呢?
否则将使用TINYINT
包含值0、1和2(或者可能是1、2和3)及其含义的查找表。然后,在两个表之间添加FK以强制仅输入那些值。
在最后的选择是去同一个CHAR(1)
列。仅当您还指定了二进制排序规则(如)时,这才可以Latin1_General_100_BIN2
。二进制归类将使它不至于损失其他两个选项的性能。如果没有二进制归类,则string列会将值与语言规则进行比较,这需要花费更多时间,但对于这种用法没有任何意义。你还需要一个AFTER INSERT, UPDATE
触发到第一UPPER()
这个值的一致性,然后执行所有的值或者是Y
,N
,或A
(对于“N / A”)。比0、1和2(通过TINYINT
),而且搜索效率非常高,也只有1个字节,因此BUT使用将需要记住仅指定大写字母,否则它们可能无法获得预期的结果。
没有理由在所有使用VARCHAR(3)
并存储满值N/A
/ Yes
/ No
,除非你只是不关心系统越来越慢;-)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句