Chúng tôi có một bảng SQL cũ đã được sử dụng bởi SQL Server 2000 trong gần 10 năm.
Trong đó, số huy hiệu nhân viên của chúng tôi được lưu trữ như char(6)
từ 000001
đến 999999
.
Tôi hiện đang viết một ứng dụng web và tôi cần lưu trữ số huy hiệu của nhân viên.
Trong bảng mới của tôi, tôi có thể cắt ngắn và sao chép bảng cũ, nhưng tôi hy vọng truyền dữ liệu tốt hơn, kích thước nhỏ hơn, v.v. bằng cách lưu trữ các int
giá trị từ 1
đến 999999
.
Trong C #, tôi có thể nhanh chóng định dạng một int
giá trị cho số huy hiệu bằng cách sử dụng
public static string GetBadgeString(int badgeNum) {
return string.Format("{0:000000}", badgeNum);
// alternate
// return string.Format("{0:d6}", badgeNum);
}
Làm cách nào để sửa đổi truy vấn SQL đơn giản này để định dạng cả giá trị trả về?
SELECT EmployeeID
FROM dbo.RequestItems
WHERE ID=0
Nếu EmployeeID
là 7135, truy vấn này sẽ trả về 007135
.
FORMAT
chức năng như C # :-)
int
giá trị chiếm ít không gian hơn đáng kể char(6)
và sẽ có nhiều mục nhập này trên mỗi phần được sản xuất. Hiệu quả.
DATALENGTH()
) hai byte mỗi số. Vì cột có thể nằm trong chỉ mục, bạn có thể tiết kiệm hơn 2MB. Và với các cột khác được thêm vào, 2 byte đó có thể vừa đủ để giảm độ dài của một hàng đủ để lưu một trang 4KB trên mỗi hàng. Điều này sẽ được lưu trữ trên nền tảng di động hay bạn có thể đang tập trung sự chú ý của mình vào một lĩnh vực không hiệu quả?
0
các s đứng đầu rất quan trọng đối với trường này, tại sao lại thay đổi nó thành mộtINT
?