2012-11-29 19 views
5

Chcę przechowywać moje wartości jako FLOATS, ale podczas ich pobierania użytkownik może określić (i zmienić w czasie wykonywania) liczbę cyfr, które chce zobaczyć po przecinku dziesiętnym.SELECT FLOAT z zadaną precyzją

Czy mogę przekazać to w moim SELECT w jakiś sposób, czy muszę to zrobić w mojej aplikacji?

Odpowiedz

8

Tak, wystarczy określić drugi parametr dla ROUND()

SELECT ROUND(23.298, <precision>); 

z tym, można określić liczbę cyfr, które chcesz, aby wrócił. (możesz nawet mieć ujemne wartości, w tym przypadku dane wejściowe zostaną zaokrąglone do 10 (-precision)).

Albo można użyć CAST jak DECIMAL:

CAST(2.5 AS DECIMAL(20,2)) 

(Uwaga: ta ostatnia będzie działać z wejść tekstowych też, jak CAST('2.5' AS DECIMAL(20,2)), ale w tym przypadku jest to około wejść float)

4

użycie ROUND() , CEIL() lub FLOOR(), aby zrobić to samo i uzyskać wartość drugiego argumentu przekazaną przez użytkownika jako dane wejściowe.

+0

+1, całkowicie zapomniałem o CEIL i FLOOR! – ppeterka