Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tambahkan Leading &Trailing Zeros di SQL Server

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat Tabel dengan menggunakan GUI Di SQL Server - Tutorial SQL Server / T-SQL Part 37

  2. Pengenalan OPENJSON dengan Contoh (SQL Server)

  3. Penginstalan dan Konfigurasi SQL Server Log Pengiriman &Pemulihan Bencana -2

  4. Perbaiki "Kesalahan overflow aritmatika mengonversi ekspresi ke tipe data int" di SQL Server

  5. Penggabungan String SQL Server dengan Null