Muszę policzyć cyfry po przecinku w bazie danych obsługiwanej przez serwer MS SQL (2005 lub 2008, nie ma znaczenia), w celu skorygowania błędów popełnionych przez użytkowników. Mam taki sam problem w bazie danych Oracle, ale tam są rzeczy mniej skomplikowane. Konkluzja jest Oracle SELECT jest:Jak uzyskać liczbę cyfr po przecinku w kolumnie swobodnej w ms sql?
select length(substr(to_char(MY_FIELD), instr(to_char(MY_FILED),'.',1,1)+1, length(to_char(MY_FILED)))) as digits_length
from MY_TABLE
gdzie złożony My_filed jest pływak (38).
Na serwerze MS SQL próbuję użyć:
select LEN(SUBSTRING(CAST(MY_FIELD AS VARCHAR), CHARINDEX('.',CAST(MY_FILED AS VARCHAR),1)+1, LEN(CAST(MY_FIELD AS VARCHAR)))) as digits_length
from MY_TABLE
Problemem jest to, że na MS SQL Server, gdy rzucam MY_FIELD jako varchar liczby typu float są obcinane przez zaledwie 2 miejsc po przecinku, a liczba cyfr jest źle. Czy ktoś może mi podać jakieś wskazówki?
Pozdrawiamy.
Należy zauważyć, że dla liczb całkowitych zwraca 1 zamiast oczekiwanego 0. – user824276