我有一张表,其中我有一个字段,需要3个字母和3个数字(必须介于值2000和7000之间)。
我一直在阅读,我仍然不确定哪个是更好的方法来处理这个问题,是否可以使用简单的数据类型,例如char(6),或者是否必须一个只包含3个字母的字段,另一个字段包含带有检查限制的3个数字,以确保该字段的值介于2000和2000之间。 7000。
你可以提供给我的任何帮助,我很高兴。提前致谢
答案 0 :(得分:1)
你可能必须对这些要求给出更多的特殊性,但对我来说听起来像是一个最好的选择 - 特别是如果订单很重要。如果字母和数字分别具有含义,那么它们应该分为两列。否则,你最终必须将它们连接在一起。
char(6)
只要你知道总是完全是6个字符就可以了。您无法在列级别强制执行2000到7000这样的特定限制(这是4个数字,不是吗?)
答案 1 :(得分:0)
每个字段应表示表所包含的实体的属性。换句话说,如果这三个字母和三个数字代表不同的属性,它们应该位于不同的字段中,否则(例如它们代表序列号)您可以将它们放在一个字段中。 另一种方法是考虑一个可能的用例,例如:我是否会根据第二个数字执行查询?如果你的答案是肯定的,那么它们应该在不同的字段中,否则它们代表一个属性,它们应该在一个字段中。
希望它有所帮助。
答案 2 :(得分:0)
如果值为“one”值,请使用一列,例如char(6)
,但是......
这是一个令人惊讶的事实: mysql不支持CHECK约束!
Mysql允许定义CHECK约束,但是它们被完全忽略,只允许与其他数据库中的SQL进行比较。
如果要强制执行格式,则需要使用触发器,但mysql不支持引发异常,因此您必须使用解决方法。
最好的选择可能是使用应用程序代码进行验证。