Beberapa DBMS memiliki LPAD()
dan RPAD()
fungsi yang dapat digunakan untuk mengisi angka dengan nol di depan dan di belakang.
SQL Server tidak memiliki fungsi seperti itu. Namun hal itu tidak menghalangi kami untuk dapat memasukkan angka dengan angka nol di depan/di belakang.
Non-Bilangan Bulat
Pertama, mari kita lihat non-bilangan bulat:
SELECT
FORMAT(7, '000.00') AS "1",
FORMAT(17, '000.00') AS "2",
FORMAT(73.5, '000.00') AS "3";
Hasil:
+--------+--------+--------+ | 1 | 2 | 3 | |--------+--------+--------| | 007.00 | 017.00 | 073.50 | +--------+--------+--------+
Di sini, kami menggunakan FORMAT()
berfungsi untuk memformat angka. Argumen pertama adalah nomor, dan argumen kedua adalah format string. Fungsi mengeluarkan hasilnya sebagai string yang diformat.
Dalam contoh di atas, string format terdiri dari penentu format numerik khusus yang menghasilkan angka asli yang ditambahkan nol di tempat di mana tidak ada angka dalam angka aslinya. Kita dapat menggunakan angka nol dalam format string sebanyak yang kita butuhkan.
SELECT
FORMAT(7, '00000.0000') AS "1",
FORMAT(17, '00000.0000') AS "2",
FORMAT(73.5, '00000.0000') AS "3";
Hasil:
+------------+------------+------------+ | 1 | 2 | 3 | |------------+------------+------------| | 00007.0000 | 00017.0000 | 00073.5000 | +------------+------------+------------+
Bilangan bulat
Jika bilangan aslinya adalah bilangan bulat, maka kita perlu melakukan sedikit lebih banyak pekerjaan:
SELECT
REPLACE(FORMAT(7, '00000.0000', 'en-US'), '.', '') AS "1",
REPLACE(FORMAT(17, '00000.0000', 'en-US'), '.', '') AS "2",
REPLACE(FORMAT(73.5, '00000.0000', 'en-US'), '.', '') AS "3";
Hasil:
+-----------+-----------+-----------+ | 1 | 2 | 3 | |-----------+-----------+-----------| | 000070000 | 000170000 | 000735000 | +-----------+-----------+-----------+
Di sini, saya menggunakan REPLACE()
berfungsi untuk menghilangkan titik desimal setelah angka diformat dengannya.
Saya secara eksplisit menggunakan en-US
sebagai argumen ketiga (opsional) untuk memastikan bahwa pemisah desimal adalah titik/titik, dan bukan karakter lain, seperti koma. Beberapa lokal menggunakan koma sebagai pemisah desimal. Jika kita tidak secara eksplisit menentukan lokal dari dalam fungsi, maka lokal sesi saat ini akan digunakan. Menentukan lokal secara eksplisit dari dalam fungsi memastikan bahwa lokal sesi saat ini tidak digunakan, dan oleh karena itu, tidak dapat mengganggu operasi penggantian kami.
Azure SQL Edge
Azure SQL Edge dibangun di atas implementasi terbatas dari SQL Server Database Engine, dan oleh karena itu mendukung sebagian besar fungsi T-SQL yang dapat kita gunakan dengan SQL Server. Namun, pada saat penulisan, SQL Edge tidak mendukung T-SQL FORMAT()
fungsi.
Lihat Cara Menambahkan Leading &Trailing Zeros di Azure SQL Edge untuk metode alternatif (yang juga berfungsi di SQL Server).