T-SQL SQL Server wyświetlanie liczb zmiennoprzecinkowych.

W dzisiejszym wpisie zajmę się tematem wyświetlania liczb zmiennoprzecinkowych w SQL Serverze.

Problem:
Jak poprawnie wyświetlić wynik z dzielenia dwóch liczb (całkowitych), który jest liczbą zmiennoprzecinkowoą.

Krok 1
Zadeklarujmy sobie dwie liczby typu INT (tak żeby wynikiem była liczba zmiennoprzecinkowa) i spróbujmy wyświetlić wynik działania.

DECLARE @dzielna INT = 28;
DECLARE @dzielnik INT = 5;

SELECT
    @dzielna / @dzielnik AS Wynik

wynik poniżej

T-SQL SQL Server wyświetlanie liczb zmiennoprzecinkowych.

Jak widzimy w wyniku wyświetla się tylko liczba 5, czyli część przed przecinkiem ale nie ma części po przecinku bo prawidłowy wynik działania to 5,6

Krok 2
Teraz zminimy tym zmiennych z INT na NUMERIC i zobaczymy co się stanie


DECLARE @dzielna NUMERIC = 28;
DECLARE @dzielnik NUMERIC = 5;

SELECT
    @dzielna / @dzielnik AS Wynik

wynik poniżej

T-SQL SQL Server wyświetlanie liczb zmiennoprzecinkowych.

Wynik jest już prawidłowy ale wyświetlany jest z dużą dokładnością miejsc po przecinku. Rozwiązaniem tej sytuacji będzie zastosowanie funkcji CAST().

DECLARE @dzielna NUMERIC = 28;
DECLARE @dzielnik NUMERIC = 5;

SELECT
    CAST(@dzielna / @dzielnik AS NUMERIC(6,2)) AS Wynik


SQL tutorial. AdventureWorks exercises SQL SERVER  SQL tutorial. AdventureWorks exercises SQL SERVER