Как убрать десятичную запятую, если число перед запятой равно 0 - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь удалить десятичные разряды из определенных значений

Например, мой текущий код

select po_id, AVG(price*quantity) * count(*) AS 'Total Cost'
from po_items natural join items 
group by po_id; 

это вывод, который я получаю

po_id       Total Cost
----------  ----------
AAA         2217.5
BBB         255.0
CCC         5787.5
DDD         10000.0
GGG         1000.0

и вывод, который я пытаюсь получить:

po_id       Total Cost
----------  ----------
AAA         2217.5
BBB         255
CCC         5787.5
DDD         10000
GGG         1000

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

ОК, как показано ниже:

sqlite> select cost from my_table;
2217.5
255.0
5787.5
10000.0
1000.0

sqlite> select replace(cast(cost as string),'.0','') from my_table;
2217.5
255
5787.5
10000
1000

Ваш полный SQL может быть:

select 
    po_id, 
    replace(cast(avg(price*quantity)*count(1) as string),'.0','') as 'Total Cost'
from 
    po_items
join 
    items 
group by 
    po_id; 
0 голосов
/ 31 мая 2019

Используйте printf() с указателем формата %g:

sqlite> select printf('%g', 5.0), printf('%g', 5.5);
printf('%g', 5.0)  printf('%g', 5.5)
-----------------  -----------------
5                  5.5        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...