Преобразование числа в слово с использованием длины PL / SQL - PullRequest
0 голосов
/ 30 мая 2018

Я конвертирую число в слово с собственным кодом, используя функцию длины.

Вот код:

CREATE OR REPLACE FUNCTION num_to_words (NUM IN NUMBER)
RETURN VARCHAR2
IS

v_length NUMBER;
v_words VARCHAR2(100);
word_1 VARCHAR2(100);

BEGIN
word_1 := 'HUNDRED';
v_length := LENGTH(NUM);

IF v_length = 3
THEN v_words := SUBSTR(TO_CHAR(TO_DATE(NUM,'J'),'JSP'),1,3) ||' '|| word_1;
END IF;

RETURN(v_words);
END;

Проблема в том, что когда я ввожу «100», он успешно преобразуется в «СТО».

Как я могу реализовать коддля преобразования «101» в «ОДИН СТО».

1 Ответ

0 голосов
/ 30 мая 2018

Преобразование JSP сделает это за вас;вам не нужно извлекать первую цифру или вводить «сотню» текста самостоятельно:

  IF v_length <= 3 THEN
    v_words := TO_CHAR(TO_DATE(NUM,'J'),'JSP');
  END IF;

Если вы передадите 101, результатом будет ONE HUNDRED ONE.И поскольку я изменил = 3 на <= 3, он будет работать для любого 1, 2 или 3-значного значения, поэтому передача 11 возвращает ELEVEN.

Для более длинных значений вы, возможно, ищете что-то вроде этого , которое разбивает число на группы и преобразует каждую группу в слова плюс соответствующий масштаб (например, «миллион»).Если вы хотите нестандартную группировку, тогда это немного сложнее, но есть недавний пример для lakh здесь .

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