Quel type de données dois-je utiliser pour stocker la valeur personnalisée dans SQL Server

Quelle est la meilleure façon de stocker la valeur suivante dans SQL Server?

1234-56789 or 4567-12892 

La valeur aura toujours 4 numbers suivis d'un trait d'union et de 5 numbers

char(10) est une possibilité que je pensais utiliser ou enlever le trait d'union et stocker comme int

Si c'est une exigence de l'entreprise d'avoir "La valeur aura toujours 4 numbers suivis par un hypen et 5 numbers" Puis CHAR(10) mais si vous pensez que les users devraient pouvoir append des valeurs même si ce n'est pas le format attendu VARCHAR(10) ou VARCHAR(15) tout ce qui vous convient le mieux.

Vous devez stocker ces types de valeurs en tant que int uniquement si elles représentent réellement un nombre par opposition à une série de numbers. Le nombre signifie quelque chose sur lequel vous pouvez effectuer des calculs, comparer des nombres, etc.

Sinon, stockez-le comme char. Faites-en une longueur de 10 si le format est défini et ne changera pas.

Une autre option serait de créer une colonne CHAR (4) et une colonne CHAR (5). Cela serait utile (seulement) si vous envisagez d'avoir à interroger l'une ou l'autre partie indépendamment.

Il est très facile de les concaténer set à l'aide d'une vue, d'une colonne calculée ou d'une ligne – pour ne pas gaspiller d'espace de stockage sur un tiret qui sera toujours présent et pour séparer ces deux données si, en fait, ils sont indépendants.

Puisque vous n'avez pas fourni beaucoup de détails sur ce que ces «numbers» représentent ou comment ils seront utilisés / interrogés, vous obtiendrez un tas d'opinions, dont certaines pourraient ne pas être très pertinentes pour votre model de données.

Eh bien, s'il est garanti de toujours être comme ça, un type de données char(10) semble approprié.

Mais vous devriez également append une contrainte de check :

 column LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]' 

Voici une réponse SO qui devrait vous aider à déterminer ce dont vous avez besoin

  1. nchar et nvarchar peuvent stocker des caractères Unicode.
  2. char et varcharcannot stockent les caractères Unicode.
  3. char et nchar sont de longueur fixe, ce qui permet de réserver de l'espace de stockage pour le nombre de caractères que vous spécifiez même si vous n'utilisez pas tout cet espace.
  4. varchar et nvarchar sont de longueur variable qui n'utilisent que des espaces pour les caractères que vous stockez. Il ne réserve pas de stockage comme char ou nchar.