1

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

1234-56789 or
4567-12892

该值将始终包含 4 位数字,后跟连字符和 5 位数字

char(10)是我正在考虑使用或删除连字符并将其存储为的可能性int

4

5 回答 5

1

如果业务要求具有“该值将始终有 4 位数字,后跟一个连字符和 5 位数字”,那么CHAR(10)但是如果您认为用户应该能够添加值,即使不是预期的格式,VARCHAR(10)或者VARCHAR(15)更适合您的格式。

于 2013-11-11T23:06:39.860 回答
1

您应该将这些值存储为int仅当真正代表一个数字而不是一系列数字时。数字意味着您可以进行计算,比较数字等的东西。

否则将其存储为char。如果格式已设置并且不会更改,则将其长度设为 10。

于 2013-11-11T23:06:53.063 回答
1

另一种选择是创建一个 CHAR(4) 列和一个 CHAR(5) 列。如果您设想必须独立查询一个或另一部分,这将是有用的(仅)。

使用视图、计算列或内联很容易将它们连接在一起 - 因此您不必在始终存在的破折号上浪费存储空间,这样您就可以将这两个数据分开,如果,事实上,它们是独立的。

由于您没有提供有关这些“数字”代表什么或如何使用/查询它们的详细信息,因此您将获得一大堆意见,其中一些可能与您的数据模型不太相关。

于 2013-11-11T23:08:20.563 回答
1

好吧,如果保证总是这样,那么char(10)数据类型似乎是合适的。

但是您还应该添加一个check约束:

column LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]'
于 2013-11-11T23:10:51.233 回答
0

这是一个SO答案,应该可以帮助您理清所需的内容-

  1. nchar 和 nvarchar 可以存储 Unicode 字符。
  2. char 和 varchar 不能存储 Unicode 字符。
  3. char 和 nchar 是固定长度的,即使您没有用完所有空间,也会为您指定的字符数保留存储空间。
  4. varchar 和 nvarchar 是可变长度的,只会用完您存储的字符的空格。它不会像 char 或 nchar 那样保留存储空间。
于 2013-11-11T23:08:05.140 回答