Как вы обходите поплавки условно? - PullRequest
0 голосов
/ 10 апреля 2019

Я пишу запрос, который используется программным обеспечением для создания отчетов.

Часть этого - запрос времени, необходимого для завершения проекта. Мы записываем это число с точностью до десятичного знака, чтобы мы могли оценить его до четверти часа.

Однако, если мы используем его в нашем отчете, и записанный нами час равен примерно 8.00, я хочу запросить его и отформатировать так, чтобы 8.00 было только 8. Однако любые часы с чем-то после запятой, например 8.25, должно остаться как 8.25. Как я могу сделать эту работу?

hours                     Queried Result
======    -> My Query ->  ==============
8.00                      8
8.25                      8.25

Я использую MySQL 5.6

Ответы [ 3 ]

1 голос
/ 10 апреля 2019

Вы можете преобразовать его в строку и проверить 2 крайних правых символа и обрезать их, если они равны '00'.

 SELECT TRIM(TRAILING '.00' FROM CAST(column_name AS VARCHAR));
1 голос
/ 10 апреля 2019

Вы можете использовать функцию REPLACE() для удаления .00:

REPLACE(hours, '.00', '') AS hours
0 голосов
/ 11 апреля 2019

ВЫБРАТЬ ЗАМЕНУ (раунд (8.00), '.00', '');

Я приведу еще один пример, чтобы вы могли очистить свою логику:

MySQL ROUND () округляет число, указанное в качестве аргумента, до числа, указанного в качестве другого аргумента.

Синтаксис:

ROUND (N, [D]);

Где 'N' округлено до D десятичных знаков. и 'D' указывает, до какого числа десятичных знаков N будет округлено.

Пример 1: -

SELECT ROUND(4.43);

Вывод: -

 4

Вышеупомянутое выражение MySQL будет округлять указанное число 4.43. Десятичные разряды не определены, поэтому десятичное значение по умолчанию равно 0.

Пример 2: -

SELECT ROUND(-4.53);

Выход: -

-5

Приведенный выше оператор MySQL округляет указанное число до -4,53. Десятичные разряды не определены, поэтому десятичное значение по умолчанию равно 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...