Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak definiuje się skalę, gdy dzielone są liczby dziesiętne i bigint?

Argument 1:3 AS DECIMAL(19, 8)

Argument 2:27 AS DECIMAL (18, 0) -- domyślna precyzja to 18, domyślna skala to 0 (BIGINT został przekonwertowany na DECIMAL ze względu na pierwszeństwo typu)

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

Policzmy na przykład 1:

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

Dla wszystkich twoich przykładów otrzymasz zawsze maksymalnie 27 skali.

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

Cała część zajmuje tylko niezbędne cyfry (1), (2), (1).

Dla mnie wszystko się zgadza.

Ta odpowiedź jest oparta na pracy @Paul White z 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. Skopiuj bazę danych SQL Server Express na inny komputer

  2. Jak udostępnić bazę danych TFS?

  3. Prosta składnia:wiele ograniczeń w instrukcji Alter Table

  4. Uprawnienia usług Reporting Services w usługach SQL Server R2 SSRS

  5. Szyfrowanie kopii zapasowej bazy danych programu SQL Server