преобразование int в реальное в sqlite - PullRequest
72 голосов
/ 29 ноября 2011

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

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

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

Ответы [ 4 ]

115 голосов
/ 29 ноября 2011

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

SELECT something*1.0/total FROM somewhere

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

43 голосов
/ 02 декабря 2013

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

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

SELECT CAST(field1 AS FLOAT) / field2
7 голосов
/ 31 августа 2013
select cast ( ( select 1 ) as real );

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

2 голосов
/ 13 июля 2016

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

UPDATE table_with_fields SET real_field=cast(field_with_txt AS real)
...