SQLite
 sql >> база данни >  >> RDS >> SQLite

Форматирайте числа със запетая в SQLite

SQLite има printf() функция или format() функция, която ни позволява да форматираме числа според форматиращ низ.

От SQLite 3.18.0 той приема флаг със запетая, което ни позволява да имаме разделители на запетая на хилядите марки за цели числа.

Може да се направи допълнителна работа, за да работи с реални числа/числа с плаваща запетая.

Пример

Ето пример за форматиране на цяло число със запетая като разделител на хилядите:

SELECT printf("%,d", 123456789);

Резултат:

123,456,789

Форматният низ на "%,d" е това, което определи този резултат.

Реални числа/числа с плаваща запетая

Горното решение работи само при връщане на числото без неговата дробна част.

Нека приложим този форматен низ към реално число:

SELECT printf("%,d", 1234567.4567);

Резултат:

1,234,567

Все още получаваме запетаи като разделители на групи, защото нашият форматен низ не включва дробната част.

Ето как да върнете дробната част:

SELECT printf("%.2f", 1234567.4567);

Резултат:

1234567.46

Тук, низът за формат на "%.2f" указва, че резултатът трябва да включва два знака след десетичната запетая. Можем да използваме "%.3f" за три знака след десетичната запетая и т.н.

Може да предположите, че можем да направим следното:

SELECT printf("%,d.2f", 1234567.4567);

Резултат:

1,234,567.2f

Но това очевидно не проработи.

SQLite не ни предоставя обширни възможности за форматиране на числа. Форматирането на числата може да бъде доста ангажирано и обикновено е по-добре да приложите форматирането на ниво приложение.

Въпреки това, ако наистина трябва да направите това в SQLite, можете да опитате да форматирате цялата част със запетаи, след което да я конкатенирате с десетичната част.

Например, да предположим, че имаме колона в базата данни, наречена price , което връща следния резултат:

SELECT price FROM Products;

Резултат:

5457.99   
1238999.99
11.357    
3.49      
3.0001    
1234567.89
1499.5    
9.49      
149  

Бихме могли да направим нещо по следните редове, за да форматираме всички тези числа с разделител за хиляди и десетична запетая:

SELECT
    printf("%,d", price) 
    || 
    substr(
    printf("%.2f", price), 
    instr(printf("%.2f", price), "."), 
    length(printf("%.2f", price)) - instr(printf("%.2f", price), ".") + 1
    )
FROM Products;

Резултат:

5,457.99                                                                                                                                                                                     
1,238,999.99                                                                                                                                                                                 
11.36                                                                                                                                                                                        
3.49                                                                                                                                                                                         
3.00                                                                                                                                                                                         
1,234,567.89                                                                                                                                                                                 
1,499.50                                                                                                                                                                                     
9.49                                                                                                                                                                                         
149.00   

format() Функция

SQLite 3.38.0 (издадена на 22 февруари 2022 г.) преименува printf() функция към format() . Оригиналният printf() името се запазва като псевдоним за обратна съвместимост.

Следователно първият пример на тази страница може да бъде променен, както следва:

SELECT format("%,d", 123456789);

Резултат:

123,456,789

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да актуализирам поле на моя спинер с въвеждане от потребителя в EditText

  2. Преобразувайте NULL стойности в стойността по подразбиране на колоната при вмъкване на данни в SQLite

  3. Как да използвате клас за помощник на базата данни в клас на asynctask, работещ върху различен клас

  4. Sqlite3 не вмъква няколко реда по ред

  5. Добавете генерирана колона към таблица в SQLite