我应该使用什么数据类型来存储SQL Server中的自定义值

时间:2013-11-11 23:00:38

标签: sql-server tsql

在SQL Server中存储以下值的最佳方法是什么?

1234-56789 or
4567-12892

该值始终为4位数后跟连字符和5位

char(10)我可能会考虑使用或删除连字符并存储为int

5 个答案:

答案 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答案,可以帮助您理清所需内容 -

  1. nchar和nvarchar可以存储Unicode字符。
  2. char和varcharcannot存储Unicode字符。
  3. char和nchar是固定长度的,即使您没有用完所有空间,也会为您指定的字符数保留存储空间。
  4. varchar和nvarchar是可变长度的,只会占用您存储的字符的空格。它不会保留像char或nchar这样的存储空间。
相关问题