Преобразование int в реальное в sqlite
Деление в sqlite возвращает целочисленное значение
sqlite> select totalUsers/totalBids from
(select (select count(*) from Bids) as totalBids ,
(select count(*) from Users) as totalUsers) A;
1
Можем ли мы типизировать результат, чтобы получить реальное значение результата деления?
4 ответа
Решение
Просто умножьте одно из чисел на 1.0
:
SELECT something*1.0/total FROM somewhere
Это даст вам деление с плавающей запятой вместо целочисленного деления.
В Sqlite деление целого числа на другое целое всегда будет округляться до ближайшего целого числа.
Поэтому, если вы бросите свой перечислитель в число с плавающей точкой:
SELECT CAST(field1 AS FLOAT) / field2
select cast ( ( select 1 ) as real );
Или если вы хотите обновить столбец на основе текстового столбца:
UPDATE table_with_fields SET real_field=cast(field_with_txt AS real)