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 000001a 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 intvalori da 1a 999999.
In C #, posso formattare rapidamente un intvalore 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.
FORMATfunzione come C # :-)
intvalori 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?
0s iniziali sono significative in questo campo, perché cambiarle in unINT?