• 3.5.2017
  • Ing. Jan Zedníček - Data Engineer & Controlling
  • 0

V tomto článku navážu na předchozí příspěvek o Datových typech a proberu zde číselné datové typy a jejich vlastnosti. Díky volbě správného datového typu můžete ušetřit diskové kapacity. Stačí se zamyslet nad oborem hodnot sloupce, který chcete reprezentovat a pak zvolit správný typ.

V SQL Server rozeznáváme 2 kategorie Číslených datových typů z hlediska preciznosti vyjádření čísla.

  1. Přesné číselné datové typy (Exact numerics)
  2. Přibližný číselný datový typ (Approximate numerics)

Přesná čísla v SQL (Exact Numerics)

Jak název napovídá, jedná se o datový typ, který dokáže reprezentovat číslo zcela precizně = přesně. Tuto kategorii můžeme rozdělit na:

INTEGER data type

Jsou to celá čísla, seznam viz tabulka

Datový typ Obor hodnot Velikost
BIGINT -2^63 (-9,223,372,036,854,775,808) do 2^63-1 (9,223,372,036,854,775,807) 8 Bytes
INT -2^31 (-2,147,483,648) do 2^31-1 (2,147,483,647) 4 Bytes
SMALLINT -2^15 (-32,768) do 2^15-1 (32,767) 2 Bytes
TINYINT 0 do 255 1 Byte

NUMERIC data type

Vyznačují se tím, že musí být dopředu a pevně definován počet číslic a preciznost – počet desetinných míst. Např. DECIMAL (10,2) znamená, že číslo je s přesností na 2 desetinná místa a obsahuje 8 číslic před desetinnou čárkou = celkem 10 číslic.

Datový typ Preciznost Velikost je dle preciznosti
NUMERIC 1-38 1-9 = 5 Bytes; 10-19 = 9Bytes; 20-28 = 13 Bytes; 29-38 = 17 Bytes
DECIMAL 1-38 1-9 = 5 Bytes; 10-19 = 9Bytes; 20-28 = 13 Bytes; 29-38 = 17 Bytes

Abych se přiznal příliš nevnímám rozdíl mezi těmito datovými typy, pokud by někdo věděl dejte komentář.

MONEY data type

Jsou určeny k reprezentování peněžních vyjádření nebo například vyjádření měnových kurzu. Hodí se všude tam, kde nám stačí preciznost na 4 desetinná místa

Datový typ Obor hodnot Velikost
MONEY -922,337,203,685,477.5808 do 922,337,203,685,477.5807 8 Bytes
SMALLMONEY – 214,748.3648 do 214,748.3647 4 Bytes

Přibližná čísla v SQL (Exact Numerics)

Jak jsem již naznačil, tato skupina datových typů nereprezentuje preciznost čísel zcela přesně. Řadíme sem FLOAT(n) a REAL sql data type:

Datový typ Obor hodnot Velikost
FLOAT – 1.79E+308 do -2.23E-308, 0 a 2.23E-308 do 1.79E+308 Záleží na “n”
REAL – 3.40E + 38 do -1.18E – 38, 0 a 1.18E – 38 do 3.40E + 38 4 Bytes

Příklad nedostatečné preciznosti FLOAT datového typu

Pokud potřebujeme vyjádřit číslo precizně, měli bychom se přibižným datovým typům (FLOAT, REAL) vyhnout. Ukážu zde screenshot z knihy “Training Kit (Exam 70-461) Querying Microsoft SQL Server 2012”, který mě zaujal (mimochodem knihu doporučuji). Na tomto příkladu je vidět, že použitím Přibližného datového typu je v některých situacích nevhodné, nota bene pokud jde o čárové kódy 🙂

SQL Číselné datové typy
Zdroj: Training Kit (Exam 70-461): Querying Microsoft SQL Server 2012; Autoři: Itzik Ben-Gan, Dejan Sarka, Ron Talmage; ISBN: 978-0-7356-6605-4
Rate this post

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *