Проблемът със закръгляването в SQL
Конвенционално закръгляване
Функцията "ROUND ()" SQL има съществуваща стойност и я закръглява до посочения брой десетични знаци. Форматът е както следва:
ROUND ([стойност], [n], [1]))
Тук "[стойност]" е десетична стойност, а "[n]" е броят на цифрите, към които стойността трябва да бъде закръглена. Тази функция закръгля стойности от 0, 5 или повече и стойности от 0, 49 или по-малко надолу. Избирайки стойностите "0" за цели стойности. Избирането на стойността "-1" се закръглява до множеството от най-близките 10. Третият параметър на функцията "ROUND ()", "[1]" отрязва числото с посочения брой десетични знаци, ако е избрана друга ненулева стойност. Значителен източник на неочаквани проблеми със закръглянето е фиксирането на третия параметър чрез печатни грешки, при което номерът на резултата е съкратен вместо закръглени.
ЕТАЖ И ТАВАН
SQL използва функцията "FLOOR ()", за да задейства закръгляването на стойностите до най-близкото цяло число и функцията "ТАБЛИЦА ()" да се закръгли до най-близката стойност. Двете функции връщат цели стойности. Дори и използвайки плаващ тип данни с определен брой десетични знаци, тези функции връщат стойност с нули след десетичната позиция.
Видове препоръчани данни
Най-вероятната причина за появата на грешки при закръгляване в SQL е използването на неочакван тип данни за цифровия израз във функцията "ROUND ()" или използването на "FLOOR ()" или "CEILING () ", когато очаквате да получите десетичен тип данни вместо цяло число. Ако вашата SQL функция ви дава неочаквани резултати за закръгляване, уверете се, че функцията "CAST ()", която показва номера, има тип данни "цяло число", "десетично", "пари" или "smallmoney". Типът данни "десетичен" е ограничен до общо 38 цифри, ограничение, което засяга малко хора извън научната общност.
Други видове данни
Има два вида данни, които връщат числови стойности и могат да причинят проблеми с функцията "ROUND ()". Те са "реални" и "плаващи" цифрови типове в SQL, които се използват за съхранение на много малки фракции, които са закръглени в повечето версии на SQL, с последния десетичен знак в посочения тип данни. Някои реализации на SQL кръг до нула, надолу или конвенционално. Когато получавате данни в SQL база данни, които могат да използват типове "реални" или "плаващи", използвайте функциите "CAST ()" или "CONVERT ()", за да ги превърнете в "десетични" типове данни.