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

utrata skali podczas wykonywania obliczeń

Zasady dla decimal na decimal konwersje dla mnożenia i dzielenia są opisane w BOL .

ale pozostawia nieokreślone dokładnie, w jaki sposób takie skrócenie jest wykonywane. Jest to udokumentowane tutaj . Czasami jednak łatwiej jest zastosować metodę prób i błędów!

Poniższe rzuty pośrednie dają pożądany efekt. Czy możesz z tym żyć?

DECLARE @var NUMERIC(19,8)
DECLARE @a NUMERIC(19,8)
DECLARE @b NUMERIC(19,8)

SET @var = -413.72063274
SET @a   = 651.00000000
SET @b   = 1000.00000000

DECLARE @v SQL_VARIANT 
SET @v =  CAST(@a/@b AS NUMERIC(24,10))* CAST(@var AS NUMERIC(23,8))

SELECT    CAST(SQL_VARIANT_PROPERTY(@v, 'BaseType') AS VARCHAR(30)) AS BaseType,    
          CAST(SQL_VARIANT_PROPERTY(@v, 'Precision') AS INT) AS PRECISION,    
          CAST(SQL_VARIANT_PROPERTY(@v, 'Scale') AS INT) AS Scale


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. „CREATE VIEW” musi być pierwszą instrukcją w partii zapytania

  2. Jak dodać kodowanie xml <?xml version=1.0 encoding=UTF-8?> do danych wyjściowych xml w SQL Server?

  3. Prosta próbka Pivot

  4. Błąd podczas logowania do SQL Server

  5. Jak połączyć się z SQL Server 2008 za pomocą qt?