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