PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Menghapus Trailing Zeros dari Desimal di PostgreSQL

Masalah:

Anda ingin menghapus angka nol yang tertinggal dari bagian pecahan angka desimal.

Contoh:

Basis data kami memiliki tabel bernama ribbon dengan data di kolom id , nama , dan lebar (dalam meter, dilambangkan dengan angka desimal dengan bagian pecahan 4 digit).

id nama lebar
1 Satin Besar N24 1,2000
2 Pembuatan Yc2 0.5500
3 Tiga Warna 4F1 3,2050
4 Pita Biru LB1 0,1265

Mari kita ketahui nama pita beserta lebarnya dalam meter, tetapi tanpa membuntuti nol.

Solusi:

Kami akan menggunakan operator ‘::’ untuk mengubah angka desimal menjadi tipe data NYATA. Inilah kueri yang akan Anda tulis:

SELECT name, 
  width::REAL 
FROM ribbon;

Ini hasilnya:

nama lebar_baru
Satin Besar N24 1.2
Pembuatan Yc2 0,55
Tiga Warna 4F1 3.205
Pita Biru LB1 0,1265

Diskusi:

Gunakan :: operator untuk mengonversi angka desimal yang berisi angka nol tambahan menjadi angka tanpa angka nol tambahan. Operator ini mengubah nilai di sebelah kiri ke tipe data yang ditempatkan di sebelah kanan.

Dalam contoh kami, nilai desimal dalam lebar dikonversi ke tipe data REAL, yang tidak menampilkan angka nol di belakangnya. Pita 'Large Satin N24' memiliki width nilai 1,2000 – tetapi kita tidak memerlukan angka nol di bagian pecahan dari angka ini. Oleh karena itu, kami mengonversi ke tipe data NYATA untuk memotongnya (dalam contoh kami, tiga nol dihapus). Ini adalah cara yang mudah untuk menampilkan nomor karena hanya menghilangkan angka nol; misalnya, 'Blue Ribbon LB1' tidak memiliki nol setelah koma, jadi nilainya tetap sama setelah konversi.

Jika Anda memiliki jumlah nol yang sama di bagian pecahan dari semua nilai Anda, gunakan TRUNC() fungsi. Dibutuhkan dua argumen:nilai/nama kolom yang berisi nomor dan bilangan bulat yang menunjukkan jumlah digit pecahan yang diinginkan; sisanya dipotong. Lihat contoh yang sama dengan nilai yang berbeda pada kolom width :

id nama lebar
1 Satin Besar N24 1.200
2 Pembuatan Yc2 0,500
3 Tiga Warna 4F1 3.200
4 Pita Biru LB1 0,100

Solusi 2:

Inilah kueri yang akan Anda tulis:

SELECT name, 
  TRUNC(width,1) 
FROM ribbon;

Ini hasilnya:

nama lebar_baru
Satin Besar N24 1.0
Pembuatan Yc2 0,5
Tiga Warna 4F1 3.2
Pita Biru LB1 0,1

Hanya satu digit yang ditampilkan di bagian desimal. Perhatikan bahwa TRUNC() memotong semua digit, bukan hanya nol.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql 9.2 versi pg_dump tidak cocok

  2. Alat Peringatan dan Pemberitahuan Terbaik untuk PostgreSQL

  3. Kembalikan baris SETOF dari fungsi PostgreSQL

  4. Mengimpor file .sql di windows ke postgresql

  5. Menjalankan skrip SQL melalui psql memberikan kesalahan sintaks yang tidak terjadi di PgAdmin