2012-02-05 51 views
20

Ho alcune tabelle in un database SQLite che contiene il tipo di colonna FLOAT, ora voglio recuperare il valore con una query e formattare il campo float sempre con 2 posizioni decimali, finora ho scritta interrogo come questo:Numero di formato SQLite con 2 posizioni decimali sempre

SELECT ROUND(floatField,2) AD field FROM table 

questo ritorno un gruppo di risultati come il seguente:

3.56 
---- 
2.4 
---- 
4.78 
---- 
3 

voglio formattare il risultato sempre con due cifre decimali, quindi:

3.56 
---- 
2.40 
---- 
4.78 
---- 
3.00 

È possibile formattare sempre con 2 posizioni decimali direttamente da SQL Query? Come può essere fatto in SQLite?

Grazie.

+0

Hai trovato una soluzione? –

risposta

0

causa il modo in cui memorizza SQLite numeri internamente,

Probabilmente si desidera qualcosa di simile

select case when substr(num,length(ROUND(floatField,2))-1,1) = "." then num || "0" else num end from table; 
+2

Non funziona, il numero potrebbe anche essere superiore a 10, quindi potrei avere 100.4, 1290.7, ... – aleroot

+0

Anche la notazione esponenziale farà fallire. – swdev

-1

Si potrebbe provare Select Str (12345,6789, 12, 3)

display: '12.345,679 '(3 spazi, 5 cifre 12345, un punto decimale e tre cifre decimali (679). Arrotonda se deve troncare, (a meno che la parte intera non sia troppo grande per la dimensione totale, nel qual caso vengono invece visualizzati gli asterischi .)

per un totale di 12 caratteri, con 3 a destra del punto decimale.

+1

Non funziona. SQLite non ha alcuna funzione STR(). (SQLite! = SQL Server) – swdev

37

È possibile utilizzare printf come:

SELECT printf("%.2f", floatField) AS field FROM table; 

ad esempio:

sqlite> SELECT printf("%.2f", floatField) AS field FROM mytable; 
3.56 
2.40 
4.78 
3.00 
sqlite> 
+11

Disponibile solo con SQLite 3.8.3 o versione successiva (versione febbraio 2014) – swdev

+1

Come indicato da @swdev, questa funzione è ora disponibile in molti dispositivi Android, che potrebbero potenzialmente causare arresti anomali delle app su dispositivi non supportati. L'ho scoperto per esperienza, testando su un GAlaxy SIII senza gli ultimi aggiornamenti (che è abbastanza comune, BTW). – AlxDroidDev

+0

Lo stesso problema qui, ho bisogno di supportare alcuni dispositivi più vecchi e non posso usare printf –

Problemi correlati