преобразование int в real в sqlite


деление в sqlite возвращает целое значение

sqlite> select totalUsers/totalBids from 
(select (select count(*) from Bids) as totalBids , 
(select count(*) from Users) as totalUsers) A;
1

мы можем типизировать результат, чтобы получить реальное значение результата деления?

4 62

4 ответа:

просто умножьте одно из чисел на 1.0:

SELECT something*1.0/total FROM somewhere

это даст вам деление с плавающей запятой вместо целочисленного деления.

в Sqlite деление целого числа на другое всегда округляется до ближайшего целого числа.

поэтому, если вы приведете свой перечислитель к поплавку:

SELECT CAST(field1 AS FLOAT) / field2
select cast ( ( select 1 ) as real );

https://www.sqlite.org/lang_expr.html#castexpr

или если вы хотите обновить колонки на основе текстового столбца:

UPDATE table_with_fields SET real_field=cast(field_with_txt AS real)