Nous avons une ancienne table SQL qui a été utilisée par SQL Server 2000 pendant près de 10 ans.
Dans celui-ci, les numéros de badge de nos employés sont stockés char(6)
du 000001
au 999999
.
J'écris actuellement une application Web et j'ai besoin de stocker les numéros de badge des employés.
Dans ma nouvelle table, je pourrais prendre le raccourci et copier l'ancienne table, mais j'espère un meilleur transfert de données, une taille plus petite, etc., en stockant simplement les int
valeurs de 1
à 999999
.
En C #, je peux rapidement mettre en forme une int
valeur pour le numéro de badge en utilisant
public static string GetBadgeString(int badgeNum) {
return string.Format("{0:000000}", badgeNum);
// alternate
// return string.Format("{0:d6}", badgeNum);
}
Comment modifier cette simple requête SQL pour formater également la valeur renvoyée?
SELECT EmployeeID
FROM dbo.RequestItems
WHERE ID=0
Si EmployeeID
est 7135, cette requête doit renvoyer 007135
.
FORMAT
fonction comme C # :-)
int
valeurs occupent beaucoup moins d'espace que char(6)
, et il y aura plusieurs de ces entrées par pièce fabriquée. Efficacité.
DATALENGTH()
) deux octets chacun. Étant donné que la colonne peut être dans un index, vous pourriez économiser plus de 2 Mo. Et avec les autres colonnes ajoutées, ces 2 octets pourraient suffire à réduire suffisamment la longueur d'une ligne pour enregistrer une page de 4 Ko par ligne. Est-ce que cela va être hébergé sur une plate-forme mobile, ou pourriez-vous concentrer votre attention sur une zone improductive?
0
sont importants dans ce domaine, pourquoi le changer en unINT
?