Abbiamo una vecchia tabella SQL che è stata utilizzata da SQL Server 2000 per quasi 10 anni.
In esso, i nostri numeri di badge dei dipendenti sono memorizzati char(6)
da 000001
a 999999
.
Sto scrivendo un'applicazione web in questo momento e ho bisogno di memorizzare i numeri dei badge dei dipendenti.
Nella mia nuova tabella, potrei prendere la scorciatoia e copiare la vecchia tabella, ma spero in un migliore trasferimento dei dati, dimensioni più piccole, ecc. Semplicemente memorizzando i int
valori da 1
a 999999
.
In C #, posso formattare rapidamente un int
valore per il numero di badge utilizzando
public static string GetBadgeString(int badgeNum) {
return string.Format("{0:000000}", badgeNum);
// alternate
// return string.Format("{0:d6}", badgeNum);
}
Come modifico questa semplice query SQL per formattare anche il valore restituito?
SELECT EmployeeID
FROM dbo.RequestItems
WHERE ID=0
Se EmployeeID
è 7135, questa query dovrebbe restituire 007135
.
FORMAT
funzione come C # :-)
int
valori occupano molto meno spazio char(6)
e ci saranno più di queste voci per parte prodotta. Efficienza.
DATALENGTH()
) due byte ciascuno. Poiché la colonna potrebbe essere in un indice, potresti risparmiare più di 2 MB. E con altre colonne sommate, quei 2 byte potrebbero essere appena sufficienti per ridurre la lunghezza di una riga abbastanza da salvare una pagina 4KB per riga. Sarà ospitato su una piattaforma mobile o potresti concentrare la tua attenzione in un'area improduttiva?
0
s iniziali sono significative in questo campo, perché cambiarle in unINT
?