1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
zajmuje się pierwszą sprawą — dzięki uprzejmości odpowiedź na podobne pytanie na forach dotyczących serwera SQL
, który dostosowałem i szybko sprawdziłem.
Zwróć uwagę, że jeśli liczby, które zaokrąglasz do najbliższego 0.5
może być większy (np. 333.69
=> 333.5
), pamiętaj, aby podać więcej decimal
precyzja podczas rzutowania (np. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
) lub może pojawić się błąd przepełnienia:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
Dodatkowa precyzja nie wpłynie na wynik dolnego wiersza (tj. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
i select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
oba dają 3.5
); ale to marnotrawstwo, jeśli liczby, które zaokrąglasz, będą zawsze mniejsze.
Zasoby online z przykładami są dostępne dla języka T-SQL FLOOR
, CAST
i decimal
pomóc.
2) select ROUND(142600, -3)
zajmuje się drugim przypadkiem.
Podobna dokumentacja online jest dostępna dla języka T-SQL ROUND
.