Numeryczne/Dziesiętne to typy danych o stałej precyzji. Będzie przechowywał wartości z dokładną precyzją i skalował to, co zdefiniowałeś.
Jeśli potrzebujesz przechowywać dane, gdzie niewielka różnica nie ma znaczenia, możesz użyć Float lub Real. Ale jeśli potrzebujesz dokładnych danych, takich jak aplikacja finansowa. Aby zapisać dokładne dane, należy używać danych typu Numeric/Decimal lub Money, ponieważ niewielka różnica może mieć wpływ na obliczenia.
Przykład:
Zadeklarujmy dwie zmienne i zapiszmy te same dane i zobaczmy, co się stanie na wyjściu ze względu na typ danych.
DECLARE @DecimalVariable DECIMAL(8, 2) SET @DecimalVariable = 213429.95 DECLARE @FloatVariable FLOAT(24) SET @FloatVariable = 213429.95 SELECT @DecimalVariable AS DecimalVariable ,@FloatVariable AS FloatVariable
Różnica między liczbą zmiennoprzecinkową a dziesiętną/liczbową w SQL Server — samouczek T SQL
Jak widać na powyższym zrzucie, Decimal przechowywany i pokazywał dokładne wartości, a tam, gdzie zapisaliśmy wartości w postaci zmiennoprzecinkowej, zaokrąglał wartości.
Ponieważ typy danych zmiennoprzecinkowych/rzeczywistych są przybliżonymi typami danych, unikaj ich używania w klauzuli Where specjalnie z operatorami =lub <>.