Problém zaokrouhlování v SQL
Obvyklé zaokrouhlování
Funkce "ROUND ()" SQL přebírá stávající hodnotu a zaokrouhlí ji na označený počet desetinných míst. Formát je následující:
ROUND ([hodnota], [n], [1]))
Zde je "[value]" desetinnou hodnotou a "[n]" je počet číslic, na které má být hodnota zaokrouhlena. Tato funkce zaokrouhluje hodnoty 0, 5 nebo více a hodnoty 0, 49 nebo méně dolů. Volba hodnot "0" zaokrouhlí na celé hodnoty. Volba hodnoty "-1" zaokrouhlí na násobek nejbližšího 10. Třetí parametr funkce "ROUND ()", "[1]" snižuje číslo s uvedeným počtem desetinných míst, pokud je vybrána jakákoli nenulová hodnota. Významným zdrojem neočekávaných problémů zaokrouhlení je fixace třetího parametru pomocí typografických chyb, přičemž číslo výsledku je zkráceno místo zaoblené.
PODLAHY A STROPY
SQL používá funkci "FLOOR ()", aby se zaokrouhlovalo dolů na nejbližší celé číslo a funkce "CEILING ()" zaokrouhlila na nejbližší hodnotu. Tyto dvě funkce vrátí celočíselné hodnoty. Dokonce i pomocí plovoucího datového typu s určitým počtem desetinných míst tyto funkce vrátí hodnotu za nuly za desetinnou pozici.
Typy doporučených dat
Nejpravděpodobnější příčinou výskytu chyb zaokrouhlení v SQL je použití neočekávaného datového typu pro číselný výraz ve funkci "ROUND ()" nebo použití "FLOOR ()" nebo "CEILING () "když očekáváte, že získáte desetinkový typ dat namísto celé číslo. Pokud funkce SQL poskytuje neočekávané výsledky zaokrouhlení, ujistěte se, že funkce "CAST ()", která označuje číslo, má datový typ "integer", "decimal", "money" nebo "smallmoney". Datový typ "desítkové" je omezen pouze na 38 číslic, což je omezení, které postihuje několik lidí mimo vědeckou komunitu.
Jiné typy dat
Existují dva typy dat, které vracejí číselné hodnoty a které mohou způsobit problémy s funkcí "ROUND ()". Jsou to "skutečné" a "floatové" číselné typy v SQL, které se používají k ukládání velmi malých zlomků, které jsou zaokrouhleny ve většině verzí SQL s posledním desetinným místem v uvedeném datovém typu. Některé implementace SQL round to zero, down or conventional. Pokud obdržíte data v databázi SQL, která může používat typy "skutečný" nebo "float", použijte funkce "CAST ()" nebo "CONVERT ()" pro jejich převedení na "desítkové" datové typy.