Как получить результат float путем деления двух целочисленных значений?
Я хотел бы указать количество десятичных цифр, когда я делаю деление между 2 целыми числами, такими как:
select 1/3
, который в настоящее время возвращает 0. Я хотел бы его вернуть 0,33.
что-то типа:
select round(1/3, -2)
но это не сработает. Как я могу достичь желаемого результата?
8 ответов:
предложения от stb и xiowl прекрасны, если вы ищете константу. Если вам нужно использовать существующие поля или параметры, которые являются целыми числами, вы можете сначала привести их к плаванию:
SELECT CAST(1 AS float) / CAST(3 AS float)или
SELECT CAST(MyIntField1 AS float) / CAST(MyIntField2 AS float)
потому что SQL Server выполняет целочисленное деление. Попробуйте это:
select 1 * 1.0 / 3это полезно, когда вы проходите целых числа в качестве параметров.
select x * 1.0 / y
нет необходимости бросать их обоих. Тип данных результата для деления всегда один с более высоким тип данных приоритет. Таким образом, решение должно быть:
SELECT CAST(1 AS float) / 3или
SELECT 1 / CAST(3 AS float)
может быть немного поздно, но понимают, что
CASTнаFLOATне допускается в MySQL и вызовет ошибку при попыткеCAST(1 AS float)как говорится в MySQL dev.обходной путь к этому является простым в MySQL. Просто сделай
(1 + 0.0)затем использовать
ROUNDдля достижения определенного числа десятичных знаков, как это:ROUND((1+0.0)/(2+0.0), 3)приведенный выше SQL делит 1 на 2 и возвращает float до 3 десятичных знаков, как в нем было бы
0.500.
похоже, этот трюк работает в SQL Server и короче (на основе предыдущих ответов)
SELECT 1.0*MyInt1/MyInt2или:
SELECT (1.0*MyInt1)/MyInt2