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

Bagaimana skala didefinisikan ketika desimal dan bigint dibagi?

Argumen 1:3 AS DECIMAL(19, 8)

Argumen 2:27 AS DECIMAL (18, 0) -- presisi default adalah 18, skala default adalah 0 (BIGINT telah dikonversi ke DECIMAL karena jenis didahulukan)

p1 = 19
p2 = 18
s1 = 8
s2 = 0

Mari kita hitung misalnya 1:

precision: (19 - 8 + 0) + MAX(6, 8 + 18 + 1) = 38
scale:     MAX(6, 8 + 18 + 1) = 27

Untuk semua contoh Anda, Anda akan selalu mendapatkan skala maksimum 27.

 0.111111111111111111111111111 (27)
11.111111111111111111111111111 (27)
 0.005488934750153684025643277 (27)

Seluruh bagian hanya membutuhkan angka (1), (2), (1).

Bagi saya semuanya benar-benar valid.

Jawaban ini didasarkan pada karya @Paul White dari Decimal Truncation In division .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL mengelompokkan nilai-nilai yang serupa bersama-sama

  2. WHERE IN (SELECT NonExistingColumnName) menyebabkan perilaku tak terduga

  3. ssis mengirim tugas email:Kesalahan:Terjadi kesalahan dengan pesan kesalahan berikut:Waktu operasi telah habis.

  4. DI Operator SQL

  5. Tidak dapat terhubung ke server sql