Berikut adalah tiga opsi untuk mengonversi bilangan bulat ke nilai desimal di SQL Server menggunakan T-SQL.
CAST()
Fungsi
CAST()
fungsi mengubah ekspresi dari satu tipe data ke tipe data lainnya:
SELECT CAST(275 AS DECIMAL(5, 2));
Hasil:
275.00
Dalam contoh ini, kami mengonversi bilangan bulat (275
) ke nilai desimal dengan presisi 5
dan dengan 2
tempat desimal.
Desimal dan numerik adalah sinonim dan dapat digunakan secara bergantian. Oleh karena itu, kita dapat menyesuaikan contoh kita sebagai berikut untuk mencapai hasil yang sama:
SELECT CAST(275 AS NUMERIC(5, 2));
Hasil:
275.00
Penting untuk diingat untuk menyesuaikan presisi sesuai kebutuhan:
SELECT CAST(18301275 AS DECIMAL(10, 2));
Hasil:
18301275.00
Jika argumen presisi tidak cukup besar, terjadi kesalahan:
SELECT CAST(18301275 AS DECIMAL(9, 2));
Hasil:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
CONVERT()
Fungsi
CONVERT()
fungsi melakukan hal yang sama seperti CAST()
, kecuali dengan sintaks yang sedikit berbeda:
SELECT CONVERT(DECIMAL(5, 2), 275);
Hasil:
275.00
Gunakan Operator Aritmatika
Pilihan lainnya adalah menggunakan operator aritmatika, seperti operator perkalian:
SELECT 275 * 1.00;
Hasil:
275.00
Dalam contoh ini, kita mengalikan bilangan bulat dengan 1.00
.
Di SQL Server, setiap kali operator menggabungkan ekspresi dari tipe data yang berbeda, tipe data dengan prioritas lebih rendah pertama-tama dikonversi ke tipe data dengan prioritas lebih tinggi. Operasi kemudian mengembalikan tipe data argumen dengan prioritas lebih tinggi.
Di SQL Server, desimal memiliki prioritas lebih tinggi daripada integer.
Dengan mengalikannya dengan 1,00, kita tidak mengubah bagian bilangan bulat. Kami hanya mengubahnya menjadi desimal dan menambahkan bagian pecahan.
Lihat Prioritas Tipe Data di SQL Server untuk daftar tipe data dalam urutan prioritas.