Въпреки че Oracle Database има TO_CHAR(number)
функция, която ни позволява да форматираме числа, тя не предоставя елемент за форматиране на знака за процент.
Следователно, ако искаме да форматираме число като процент в Oracle Database, трябва да обединим знака за процент и числото.
Пример
Можем да използваме CONCAT()
функция за свързване на числото и знака за процент.
Все още можем да използваме TO_CHAR(number)
функция за форматиране на числото, така че да има желаните десетични знаци, водещи нули (или не) и т.н.:
SELECT CONCAT(TO_CHAR(18, 'fm00D00'), '%')
FROM DUAL;
Резултат:
18.00%
Тук използвах 0
форматен елемент, което означава, че позицията на цифрата винаги ще се отпечатва, дори ако съдържа водеща/завършваща нула.
Използвах и fm
модификатор на формат за потискане на всички начални/завършващи нули или празни места.
Ето го с някои други модели на формат:
SELECT
CONCAT(TO_CHAR(7, 'fm00'), '%') AS "1",
CONCAT(TO_CHAR(7, 'fm99'), '%') AS "2",
CONCAT(TO_CHAR(7.4567, 'fm0D00'), '%') AS "3",
CONCAT(TO_CHAR(7, 'fm0D00'), '%') AS "4"
FROM DUAL;
Резултат:
1 2 3 4 ______ _____ ________ ________ 07% 7% 7.46% 7.00%
Можем да извършим изчисление спрямо числото, ако е необходимо:
SELECT
CONCAT(TO_CHAR(18 * 0.1, 'fm99D00'), '%') AS "1",
CONCAT(TO_CHAR(0.18 * 100, 'fm99D00'), '%') AS "2"
FROM DUAL;
Резултат:
1 2 ________ _________ 1.80% 18.00%
В този случай включих 9
форматен елемент, така че всички водещи нули да бъдат пропуснати.
Пропускане на TO_CHAR()
Функция
Ако нямаме конкретна нужда да форматираме числото, освен да го преобразуваме в процентен формат, тогава дори не се нуждаем от TO_CHAR()
функция:
SELECT CONCAT(18, '%')
FROM DUAL;
Резултат:
18%
Операторът за конкатенация
Друг начин за свързване на числото и знака за процент е да използвате оператора за конкатенация (||
):
SELECT 18 || '%'
FROM DUAL;
Резултат:
18%
И ето го с TO_CHAR()
добавена функция за допълнително форматиране:
SELECT TO_CHAR(18, 'fm00D00') || '%'
FROM DUAL;
Резултат:
18.00%