Номер формата SQLite с двумя десятичными разрядами всегда - PullRequest
26 голосов
/ 05 февраля 2012

У меня есть несколько таблиц в базе данных SQLite, которая содержит тип столбца FLOAT, теперь я хочу получить значение с помощью запроса и отформатировать поле с плавающей запятой всегда с двумя десятичными знаками, поэтому я написал запрос, подобный этому:

SELECT ROUND(floatField,2) AD field FROM table

это возвращает набор результатов, подобный следующему:

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

Я хочу всегда форматировать результат с двумя десятичными знаками, поэтому:

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

Можно ли форматировать всегда с двумя десятичными разрядами непосредственно из SQL-запроса? Как это можно сделать в SQLite?

Спасибо.

Ответы [ 4 ]

49 голосов
/ 22 февраля 2014

Вы можете использовать printf как:

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

например:

sqlite> SELECT printf("%.2f", floatField) AS field FROM mytable;
3.56
2.40
4.78
3.00
sqlite>
0 голосов
/ 30 апреля 2019

В более старых версиях SQLite, в которых нет PRINTF, вы можете использовать ROUND.

Например ...

SELECT 
   ROUND(time_in_secs/1000.0/60.0, 2) || " mins" AS time,
   ROUND(thing_count/100.0, 2) || " %" AS percent
FROM
   blah
0 голосов
/ 09 октября 2013

Вы можете попробовать Select Str (12345.6789, 12, 3)

отображает: «12345.679» (3 пробела, 5 цифр 12345, десятичная точка и три десятичных знака (679). - округляется, если необходимо усечь (если целая часть не слишком велика для общего размера, в этом случае вместо этого отображаются звездочки.)

всего 12 символов, с 3 справа от десятичной точки.

0 голосов
/ 05 февраля 2012

Из-за того, что sqlite хранит числа внутри,

Вы, вероятно, хотите что-то вроде этого

select case when substr(num,length(ROUND(floatField,2))-1,1) = "." then num || "0" else num end from table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...