Seperti yang telah ditunjukkan dengan tepat oleh orang lain - sebuah INT tidak pernah memiliki nol di depan - itu hanya memegang nilai, itu saja (dan itu bagus).
Jika Anda memerlukan beberapa pemformatan tambahan, Anda selalu dapat menambahkan kolom yang dihitung ke tabel Anda, seperti:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Dengan cara ini, IDENTITAS INT Anda akan digunakan sebagai INT dan selalu berisi nilai numerik, sementara DisplayNumber
berisi 001, 002, ... 014, 015, .....
dan seterusnya - secara otomatis, selalu up to date.
Karena ini adalah bidang yang bertahan, sekarang menjadi bagian dari tabel Anda, dan Anda dapat membuat kueri di atasnya, dan bahkan meletakkan indeks di atasnya untuk membuat kueri lebih cepat:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
Dan tentu saja, Anda dapat menggunakan hampir semua format dalam definisi kolom yang dihitung, sehingga Anda juga dapat menambahkan awalan atau semacamnya:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Jadi dalam hal ini, DisplayNumber
Anda akan menjadi ABC-001, ABC-002, ...
dan seterusnya.
Anda mendapatkan yang terbaik dari kedua dunia - Anda menyimpan IDENTITAS INT Anda yang numerik dan secara otomatis ditingkatkan oleh SQL Server, dan Anda dapat menentukan format tampilan dengan cara apa pun yang Anda suka dan tersedia kapan saja.