Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Каква е разликата между Float и числово/десетично в SQL Server - SQL Server / T-SQL Урок, част 33

Float и Real са приблизителни типове данни. Типовете данни Float и Real не съхраняват точни стойности за много числа. Стойността може да бъде изключително затворена.

Числови/десетични са типове данни с фиксирана точност. Той ще съхрани стойностите с точна точност и мащаб, който сте дефинирали.

Ако трябва да съхранявате данни, където малка разлика няма значение, можете да използвате Float или Real. Но ако трябва да имате точни данни като за финансово приложение. Трябва да използвате тип данни числови/десетични или пари, за да запазите точни данни, тъй като малка разлика може да повлияе на изчисленията.

Пример:


Нека да декларираме две променливи и да запазим едни и същи данни и да видим какво се случва с изхода поради техния тип данни.
DECLARE @DecimalVariable DECIMAL(8, 2)

SET @DecimalVariable = 213429.95

DECLARE @FloatVariable FLOAT(24)

SET @FloatVariable = 213429.95

SELECT @DecimalVariable AS DecimalVariable
    ,@FloatVariable AS FloatVariable
 
 
 
 Разлика между плаваща и десетична/числова в SQL Server - T SQL урок 
 Както можем да видим на снимката по-горе, Decimal съхранява и показва точни стойности и където сме запазили стойности във float, той закръгля стойностите. 

Тъй като float/ реалните типове данни са приблизителни типове данни, избягвайте да ги използвате в клаузата Where, специално с =или <> оператори.
  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 екземпляр

  2. Използвайте @@IDENTITY, за да върнете последно въведената стойност на самоличността в SQL Server

  3. Използвайте FILEGROUP_ID(), за да върнете идентификатора на файлова група в SQL Server

  4. Защо SQL Server закръглява резултатите от разделянето на две цели числа?

  5. SQL Server FOR XML Path прави повтарящи се възли