web-dev-qa-db-fra.com

conversion int en réel dans sqlite

La division en sqlite renvoie une valeur entière

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

Pouvons-nous transtyper le résultat pour obtenir la valeur réelle du résultat de la division?

75
vaichidrewar

Multipliez simplement l'un des nombres par 1.0:

SELECT something*1.0/total FROM somewhere

Cela vous donnera une division en virgule flottante au lieu d'une division entière.

116
NullUserException

Dans Sqlite, la division d'un entier par un autre entier sera toujours arrondie à l'entier le plus proche.

Par conséquent, si vous transformez votre énumérateur en un flottant:

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

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

7
mpb

ou si vous souhaitez mettre à jour la colonne en fonction de la colonne de texte:

UPDATE table_with_fields SET real_field=cast(field_with_txt AS real)
2
Greg