Menggunakan T-SQL dan Microsoft SQL Server saya ingin menentukan jumlah angka desimal ketika saya melakukan pembagian antara 2 angka integer seperti:
select 1/3
Itu saat ini kembali 0
. Saya ingin kembali 0,33
.
Sesuatu seperti:
select round(1/3, -2)
Tapi itu tidak berhasil. Bagaimana saya bisa mencapai hasil yang diinginkan?
sql-server
sql-server-2008
division
rounding
LaBracca
sumber
sumber
Jawaban:
Saran dari stb dan xiowl baik-baik saja jika Anda mencari konstanta. Jika Anda perlu menggunakan bidang atau parameter yang ada yang merupakan bilangan bulat, Anda dapat menjadikannya sebagai float terlebih dahulu:
atau
sumber
decimal
Karena SQL Server melakukan pembagian integer. Coba ini:
Ini membantu ketika Anda melewatkan bilangan bulat sebagai params.
sumber
Tidak perlu membuang keduanya. Jenis data hasil untuk divisi selalu yang dengan tipe data yang lebih tinggi diutamakan . Jadi solusinya harus:
atau
sumber
menggunakan
Ini akan melakukan pekerjaan.
sumber
Saya mengerti bahwa
CAST
untukFLOAT
tidak diizinkan di MySQL dan akan memunculkan kesalahan saat Anda berusahaCAST(1 AS float)
sebagaimana dinyatakan di MySQL dev .Solusi untuk ini adalah sederhana. Kerjakan saja
Kemudian gunakan
ROUND
untuk mencapai jumlah desimal tertentu sepertiSQL di atas membagi 1 dengan 2 dan mengembalikan float ke 3 tempat desimal, seperti di dalamnya
0.500
.Satu dapat
CAST
ke jenis berikut: biner, char, tanggal, datetime, desimal, json, nchar, ditandatangani, waktu, dan unsigned .sumber
CAST
, hanya saja tidak mengizinkan casting untukFLOAT
. GunakanDECIMAL
sebagai gantinya. Lihat misalnya stackoverflow.com/questions/7368163/… .Sepertinya trik ini berfungsi di SQL Server dan lebih pendek (berdasarkan jawaban sebelumnya)
Atau:
sumber
SELECT 100.0 * @Elapsed / @Total
Gunakan ini
select cast((1*1.00)/3 AS DECIMAL(16,2)) as Result
Di sini, di sql ini pertama kali dikonversi menjadi float atau dikalikan dengan 1.00. Output yang akan menjadi angka float. Di sini saya mempertimbangkan 2 tempat desimal. Anda dapat memilih apa yang Anda butuhkan.
sumber
Jika Anda datang ke sini (sama seperti saya) untuk menemukan solusi untuk nilai integer , inilah jawabannya:
mengembalikan 5
sumber