Ответ 1
Синтаксис STR(); STR ( float_expression [ , length [ , decimal ] ] )
ясно говорит, что число равно float_expression
. Поэтому независимо от того, какое число вы дадите, сначала преобразуется в FLOAT(n)
, где значение по умолчанию n = 53.
So
SELECT STR(4.65,5,1), SELECT STR(3.65,5,1)
Равно:
SELECT STR(CAST(4.65 AS FLOAT(53)),5,1) , STR(CAST(3.65 AS FLOAT(53)),5,1)
Если вы укажете n, скажем n = 4, он даст ответ, который вы ожидаете (т.е. 4.7 и 3.7)
SELECT STR(CAST(4.65 AS FLOAT(4)),5,1) , STR(CAST(3.65 AS FLOAT(4)),5,1)
--4.7, 3.7