在SQL Server中存储以下值的最佳方法是什么?
1234-56789 or
4567-12892
该值始终为4位数后跟连字符和5位
char(10)
我可能会考虑使用或删除连字符并存储为int
答案 0 :(得分:1)
如果业务要求是“值将始终有4位数后跟一个超级和5位”然后CHAR(10)
但是如果您认为用户应该能够添加值,即使不是预期的格式然后VARCHAR(10)
或VARCHAR(15)
更适合你的。
答案 1 :(得分:1)
只有当真正代表一个数字而不是一系列数字时,才应将这些值存储为int
。数字意味着你可以进行计算,比较数字等等。
否则将其存储为char。如果格式设置且不会改变,则使其长度为10。
答案 2 :(得分:1)
另一种选择是创建CHAR(4)列和CHAR(5)列。如果您想要独立地查询一个或另一个部分,这将是有用的(仅)。
使用视图,计算列或内联非常容易将这些连接在一起 - 因此您不必浪费存储空间总是存在的破折号,以便您可以保留这两个数据事实上,他们是独立的。
由于您未提供有关这些“数字”代表什么或将如何使用/查询的详细信息,您将获得大量意见,其中一些意见可能与您的数据无关模型。
答案 3 :(得分:1)
好吧,如果保证始终如此,那么char(10)
数据类型似乎是合适的。
但您还应添加check
约束:
column LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]'
答案 4 :(得分:0)
这是一个SO答案,可以帮助您理清所需内容 -