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