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

Różnica między liczbami, liczbami zmiennoprzecinkowymi i dziesiętnymi w SQL Server

użyj float lub prawdziwe typy danych tylko jeśli precyzja zapewniana przez dziesiętne (do 38 cyfr) jest niewystarczająca

  • Przybliżone typy danych liczbowych (patrz tabela 3.3) nie przechowują dokładnych wartości określonych dla wielu liczby; przechowują bardzo blisko przybliżenie wartości.(Technet)

  • Unikaj używania kolumn zmiennoprzecinkowych lub rzeczywistych w warunkach wyszukiwania klauzuli WHERE, zwłaszcza operatorów =i <>. Najlepiej jest ograniczyć kolumny zmiennoprzecinkowe i rzeczywiste do porównań> lub <. (Technet)

więc generalnie wybór dziesiętny jako typ danych jest najlepszym wyborem, jeśli

  • Twój numer może się w nim zmieścić. Dokładność dziesiętna to 10E38 [~ 38 cyfr]
  • mniejsza przestrzeń do przechowywania (i być może szybkość obliczeń) Float nie jest dla Ciebie ważna
  • dokładne zachowanie liczbowe jest wymagane, na przykład w aplikacjach finansowych, w operacjach obejmujących zaokrąglanie lub w sprawdzaniu równości. (Technet)
  1. Dokładne Numeryczne typy danych dziesiętne i numeryczne — MSDN
  • liczba =dziesiętna (5 do 17 bajtów)
    • zmapuje na dziesiętny w .NET
    • oba mają (18, 0) jako domyślne parametry (precyzja, skala) na serwerze SQL
    • skala =maksymalna liczba cyfr dziesiętnych, które mogą być przechowywane po prawej stronie przecinka dziesiętnego.
    • money (8 bajtów) i smallmoney (4 bajty) są również dokładnym typem danych i będą mapowane na dziesiętny w .NET i mają 4 miejsca dziesiętne (MSDN)
  1. W przybliżeniu Numeryczny typ danych zmiennoprzecinkowy i rzeczywisty — MSDN
  • rzeczywista (4 bajty)
    • zmapuje się na Single w .NET
    • Synonimem ISO dla wartości real jest float(24)
  • liczba zmiennoprzecinkowa (8 bajtów)
    • zostanie odwzorowane na Double w .NET

  • Wszystkie dokładne typy liczbowe zawsze dają ten sam wynik, niezależnie od rodzaju używanej architektury procesora lub wielkości liczb
  • Parametr dostarczony do typu danych float określa liczbę bitów używanych do przechowywania mantysy liczby zmiennoprzecinkowej .
  • Przybliżony numeryczny typ danych zwykle zużywa mniej pamięci i ma lepszą prędkość (do 20x), a także należy wziąć pod uwagę, kiedy zostały przekonwertowane w .NET
  • Jaka jest różnica między liczbą dziesiętną, liczbą zmiennoprzecinkową i podwójną w C#
  • Prędkość dziesiętna a podwójna
  • SQL Server — mapowania typów danych .NET (z MSDN)

główne źródło :MCTS Self-Paced Training Kit (egzamin 70-433):Tworzenie baz danych Microsoft® SQL Server® 2008 — Rozdział 3 — Tabele, typy danych i deklaratywna integralność danych Lekcja 1 — Wybieranie typów danych (wytyczne) — Strona 93



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlParameter nie zezwala na nazwę tabeli - inne opcje bez ataku wstrzykiwania sql?

  2. Jak podzielić ciąg rozdzielany w programie SQL Server bez tworzenia funkcji?

  3. DEGREES() Przykłady w SQL Server

  4. Uzyskiwanie uprawnień do wykonywania xp_cmdshell

  5. Jaki jest cel używania OPTION(MAXDOP 1) w SQL Server?