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.