110 votes

convertir un int en real dans sqlite

La division en sqlite retourne une valeur entière

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

Peut-on faire un typage du résultat pour obtenir la valeur réelle du résultat de la division ?

162voto

NullUserException Points 42268

Il suffit de multiplier l'un des chiffres 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.

79voto

Adam Garner Points 64

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

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

SELECT CAST(field1 AS FLOAT) / field2

13voto

mpb Points 103
select cast ( ( select 1 ) as real );

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

4voto

Greg Points 163

Ou si vous voulez mettre à jour une colonne basée sur une colonne de texte :

UPDATE table_with_fields SET real_field=cast(field_with_txt AS real)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X