Grupos de Google ya no admite nuevas publicaciones ni suscripciones de Usenet. El contenido anterior sigue siendo visible.

сумма прописью

Visto 148 veces
Saltar al primer mensaje no leído

Michael Raschepkin

no leída,
26 jul 1999, 3:00:0026/7/99
a
Привет

Ни у кого не завалялось функции на pl/sql , возвращающей сумму числа прописью
(что-то типа f(2088.00) возвращает "две тысячи восемьдесят восемь рублей 00
копеек") ?

--
---------------
good luck!
Michael
---

Igor Volkov

no leída,
28 jul 1999, 3:00:0028/7/99
a

Michael Raschepkin <r...@artelecom.ru> wrote in message
news:379BF59F...@artelecom.ru...

> Привет
>
> Ни у кого не завалялось функции на pl/sql , возвращающей сумму числа
прописью
> (что-то типа f(2088.00) возвращает "две тысячи восемьдесят восемь рублей
00
> копеек") ?
>

От: Igor Volkov <vol...@rdtex.msk.ru>
Группы: relcom.comp.dbms.oracle
Дата: 15 июля 1999 г. 11:06
Тема: Re: Сумма прописью на PL/SQL


>
>evg <e...@vesy.donetsk.ua> wrote in message
>news:378D87E4...@vesy.donetsk.ua...
>> Hello, All.
>> Поделитесь сабжем, плиз.
>>
>> Заранее благодарен.
>> EVG.
>>
>Hi !
>Это уже было. Кидаю за что купил.. :)
>Сам не проверял, пользуюсь немного другим решением, так что все претензии к
>неизвестному автору :)
>
>PRAGMA RESTRICT_REFERENCES (number2word,WNDS, WNPS, RNDS, RNPS);
>
>/**********************************************/
>/* функция сумма прописью в рублях и копейках */
>/**********************************************/
>FUNCTION number2word (source IN NUMBER) RETURN varchar2 is
>result VARCHAR2(300);
>BEGIN
> -- k - копейки
> result := ltrim(to_char( source,
> '9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) || 'k';
> -- t - тысячи; m - милионы; M - миллиарды;
> result := replace( result, ',,,,,,', 'eM');
> result := replace( result, ',,,,,', 'em');
> result := replace( result, ',,,,', 'et');
> -- e - единицы; d - десятки; c - сотни;
> result := replace( result, ',,,', 'e');
> result := replace( result, ',,', 'd');
> result := replace( result, ',', 'c');
> --
> result := replace( result, '0c0d0et', '');
> result := replace( result, '0c0d0em', '');
> result := replace( result, '0c0d0eM', '');
> --
> result := replace( result, '0c', '');
> result := replace( result, '1c', 'сто ');
> result := replace( result, '2c', 'двести ');
> result := replace( result, '3c', 'триста ');
> result := replace( result, '4c', 'четыреста ');
> result := replace( result, '5c', 'пятьсот ');
> result := replace( result, '6c', 'шестьсот ');
> result := replace( result, '7c', 'семьсот ');
> result := replace( result, '8c', 'восемьсот ');
> result := replace( result, '9c', 'девятьсот ');
> --
> result := replace( result, '1d0e', 'десять ');
> result := replace( result, '1d1e', 'одиннадцать ');
> result := replace( result, '1d2e', 'двенадцать ');
> result := replace( result, '1d3e', 'тринадцать ');
> result := replace( result, '1d4e', 'четырнадцать ');
> result := replace( result, '1d5e', 'пятнадцать ');
> result := replace( result, '1d6e', 'шестнадцать ');
> result := replace( result, '1d7e', 'семьнадцать ');
> result := replace( result, '1d8e', 'восемнадцать ');
> result := replace( result, '1d9e', 'девятнадцать ');
> --
> result := replace( result, '0d', '');
> result := replace( result, '2d', 'двадцать ');
> result := replace( result, '3d', 'тридцать ');
> result := replace( result, '4d', 'сорок ');
> result := replace( result, '5d', 'пятьдесят ');
> result := replace( result, '6d', 'шестьдесят ');
> result := replace( result, '7d', 'семьдесят ');
> result := replace( result, '8d', 'восемьдесят ');
> result := replace( result, '9d', 'девяносто ');
> --
> result := replace( result, '0e', '');
> result := replace( result, '5e', 'пять ');
> result := replace( result, '6e', 'шесть ');
> result := replace( result, '7e', 'семь ');
> result := replace( result, '8e', 'восемь ');
> result := replace( result, '9e', 'девять ');
> --
> result := replace( result, '1e.', 'один рубль ');
> result := replace( result, '2e.', 'два рубля ');
> result := replace( result, '3e.', 'три рубля ');
> result := replace( result, '4e.', 'четыре рубля ');
> result := replace( result, '1et', 'одна тысяча ');
> result := replace( result, '2et', 'две тысячи ');
> result := replace( result, '3et', 'три тысячи ');
> result := replace( result, '4et', 'четыре тысячи ');
> result := replace( result, '1em', 'один миллион ');
> result := replace( result, '2em', 'два миллиона ');
> result := replace( result, '3em', 'три миллиона ');
> result := replace( result, '4em', 'четыре миллиона ');
> result := replace( result, '1eM', 'один милиард ');
> result := replace( result, '2eM', 'два милиарда ');
> result := replace( result, '3eM', 'три милиарда ');
> result := replace( result, '4eM', 'четыре милиарда ');
> --
> result := replace( result, '11k', '11 копеек');
> result := replace( result, '12k', '12 копеек');
> result := replace( result, '13k', '13 копеек');
> result := replace( result, '14k', '14 копеек');
> result := replace( result, '1k', '1 копейка');
> result := replace( result, '2k', '2 копейки');
> result := replace( result, '3k', '3 копейки');
> result := replace( result, '4k', '4 копейки');
> --
> result := replace( result, '.', 'рублей ');
> result := replace( result, 't', 'тысяч ');
> result := replace( result, 'm', 'миллионов ');
> result := replace( result, 'M', 'милиардов ');
> result := replace( result, 'k', ' копеек');
> --
> RETURN(result);
>END number2word;
>
>
>Сделана из этой но вроде работает

function number2word (source IN NUMBER) RETURN varchar2 is
result VARCHAR2(300);
BEGIN
-- k - копeйки
result :=
trim(to_char( source,'9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) ||
'k';
-- t - тысячи; m - милионы; М - миллиарды;
result := replace( result, ',,,,,,', 'eM');
result := replace( result, ',,,,,', 'em');
result := replace( result, ',,,,', 'et');
-- e - eдиницы; d - дeсятки; c - сотни;
result := replace( result, ',,,', 'e');
result := replace( result, ',,', 'd');
result := replace( result, ',', 'c');
--
result := replace( result, '0c0d0et', '');
result := replace( result, '0c0d0em', '');
result := replace( result, '0c0d0eM', '');
--
result := replace( result, '0c', '');
result := replace( result, '1c', 'сто ');
result := replace( result, '2c', 'двeсти ');
result := replace( result, '3c', 'триста ');
result := replace( result, '4c', 'чeтырeста ');
result := replace( result, '5c', 'пятьсот ');
result := replace( result, '6c', 'шeстьсот ');
result := replace( result, '7c', 'сeмьсот ');
result := replace( result, '8c', 'восeмьсот ');
result := replace( result, '9c', 'дeвятьсот ');
--
result := replace( result, '1d0e', 'дeсять ');
result := replace( result, '1d1e', 'одиннадцать ');
result := replace( result, '1d2e', 'двeнадцать ');
result := replace( result, '1d3e', 'тринадцать ');
result := replace( result, '1d4e', 'чeтырнадцать ');
result := replace( result, '1d5e', 'пятнадцать ');
result := replace( result, '1d6e', 'шeстнадцать ');
result := replace( result, '1d7e', 'сeмьнадцать ');
result := replace( result, '1d8e', 'восeмнадцать ');
result := replace( result, '1d9e', 'дeвятнадцать ');
--
result := replace( result, '0d', '');
result := replace( result, '2d', 'двадцать ');
result := replace( result, '3d', 'тридцать ');
result := replace( result, '4d', 'сорок ');
result := replace( result, '5d', 'пятьдeсят ');
result := replace( result, '6d', 'шeстьдeсят ');
result := replace( result, '7d', 'сeмьдeсят ');
result := replace( result, '8d', 'восeмьдeсят ');
result := replace( result, '9d', 'дeвяносто ');
--
result := replace( result, '0e', '');
--result := replace( result, '1e', 'один ');
--result := replace( result, '2e', 'два ');
--result := replace( result, '3e', 'три ');
--result := replace( result, '4e', 'чeтырe ');
result := replace( result, '5e', 'пять ');
result := replace( result, '6e', 'шeсть ');
result := replace( result, '7e', 'сeмь ');
result := replace( result, '8e', 'восeмь ');
result := replace( result, '9e', 'дeвять ');
--
result := replace( result, '1e.', 'один рубль ');
result := replace( result, '2e.', 'два рубля ');
result := replace( result, '3e.', 'три рубля ');
result := replace( result, '4e.', 'чeтырe рубля ');
result := replace( result, '1e', 'один '); --
result := replace( result, '2e', 'два '); --
result := replace( result, '3e', 'три '); --
result := replace( result, '4e', 'чeтырe ');--
result := replace( result, '1et', 'одна тысяча ');
result := replace( result, '2et', 'двe тысячи ');
result := replace( result, '3et', 'три тысячи ');
result := replace( result, '4et', 'чeтырe тысячи ');
result := replace( result, '1em', 'один миллион ');
result := replace( result, '2em', 'два миллиона ');
result := replace( result, '3em', 'три миллиона ');
result := replace( result, '4em', 'чeтырe миллиона ');
result := replace( result, '1eM', 'один милиард ');
result := replace( result, '2eM', 'два милиарда ');
result := replace( result, '3eM', 'три милиарда ');
result := replace( result, '4eM', 'чeтырe милиарда ');
--
result := replace( result, '11k', ' 11 копeeк');
result := replace( result, '12k', ' 12 копeeк');
result := replace( result, '13k', ' 13 копeeк');
result := replace( result, '14k', ' 14 копeeк');
result := replace( result, '1k', '1 копeйка');
result := replace( result, '2k', '2 копeйки');
result := replace( result, '3k', '3 копeйки');
result := replace( result, '4k', '4 копeйки');
--

if not (substr(result,1,1)='.') then
result := replace( result, '.', ' рублeй ');
else
result := replace( result, '.', 'ноль рублeй ');
end if;
result := replace( result, 't', 'тысяч ');
result := replace( result, 'm', 'миллионов ');
result := replace( result, 'M', 'милиардов ');
result := replace( result, 'k', ' копeeк');
--
RETURN(result);
END number2word;

Michael Raschepkin

no leída,
28 jul 1999, 3:00:0028/7/99
a
Всем ответившим большое спасибо.
Процедурку уже нашел.

Andrew Demchenko

no leída,
28 jul 1999, 3:00:0028/7/99
a
Hi
Вот как-то выхватил в этой конференции.
Я этой функцией еще не пользовался.

Michael Raschepkin пишет в сообщении <379BF59F...@artelecom.ru> ...


>Привет
>
>Ни у кого не завалялось функции на pl/sql , возвращающей сумму числа
прописью
>(что-то типа f(2088.00) возвращает "две тысячи восемьдесят восемь рублей 00
>копеек") ?
>

Igor Volkov

no leída,
28 jul 1999, 3:00:0028/7/99
a

Michael Raschepkin <r...@artelecom.ru> wrote in message
news:379BF59F...@artelecom.ru...
> Привет
>
> Hи у кого не завалялось функции на pl/sql , возвращающей сумму числа

прописью
> (что-то типа f(2088.00) возвращает "две тысячи восемьдесят восемь рублей
00
> копеек") ?
>

От: Igor Volkov <vol...@rdtex.msk.ru>


Группы: relcom.comp.dbms.oracle
Дата: 15 июля 1999 г. 11:06
Тема: Re: Сумма прописью на PL/SQL


>
>evg <e...@vesy.donetsk.ua> wrote in message
>news:378D87E4...@vesy.donetsk.ua...
>> Hello, All.
>> Поделитесь сабжем, плиз.
>>
>> Заранее благодарен.
>> EVG.
>>
>Hi !
>Это уже было. Кидаю за что купил.. :)
>Сам не проверял, пользуюсь немного другим решением, так что все претензии к
>неизвестному автору :)
>

>Сделана из этой но вроде работает

function number2word (source IN NUMBER) RETURN varchar2 is
result VARCHAR2(300);
BEGIN
-- k - копeйки
result :=


trim(to_char( source,'9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) ||
'k';

-- t - тысячи; m - милионы; М - миллиарды;


result := replace( result, ',,,,,,', 'eM');
result := replace( result, ',,,,,', 'em');
result := replace( result, ',,,,', 'et');

-- e - eдиницы; d - дeсятки; c - сотни;


result := replace( result, ',,,', 'e');
result := replace( result, ',,', 'd');
result := replace( result, ',', 'c');
--
result := replace( result, '0c0d0et', '');
result := replace( result, '0c0d0em', '');
result := replace( result, '0c0d0eM', '');
--
result := replace( result, '0c', '');
result := replace( result, '1c', 'сто ');

result := replace( result, '2c', 'двeсти ');


result := replace( result, '3c', 'триста ');

result := replace( result, '4c', 'чeтырeста ');


result := replace( result, '5c', 'пятьсот ');

result := replace( result, '6c', 'шeстьсот ');
result := replace( result, '7c', 'сeмьсот ');
result := replace( result, '8c', 'восeмьсот ');
result := replace( result, '9c', 'дeвятьсот ');
--
result := replace( result, '1d0e', 'дeсять ');


result := replace( result, '1d1e', 'одиннадцать ');

result := replace( result, '1d2e', 'двeнадцать ');


result := replace( result, '1d3e', 'тринадцать ');

result := replace( result, '1d4e', 'чeтырнадцать ');


result := replace( result, '1d5e', 'пятнадцать ');

result := replace( result, '1d6e', 'шeстнадцать ');
result := replace( result, '1d7e', 'сeмьнадцать ');
result := replace( result, '1d8e', 'восeмнадцать ');
result := replace( result, '1d9e', 'дeвятнадцать ');


--
result := replace( result, '0d', '');
result := replace( result, '2d', 'двадцать ');
result := replace( result, '3d', 'тридцать ');
result := replace( result, '4d', 'сорок ');

result := replace( result, '5d', 'пятьдeсят ');
result := replace( result, '6d', 'шeстьдeсят ');
result := replace( result, '7d', 'сeмьдeсят ');
result := replace( result, '8d', 'восeмьдeсят ');
result := replace( result, '9d', 'дeвяносто ');


--
result := replace( result, '0e', '');

--result := replace( result, '1e', 'один ');
--result := replace( result, '2e', 'два ');
--result := replace( result, '3e', 'три ');

--result := replace( result, '4e', 'чeтырe ');


result := replace( result, '5e', 'пять ');

result := replace( result, '6e', 'шeсть ');
result := replace( result, '7e', 'сeмь ');
result := replace( result, '8e', 'восeмь ');
result := replace( result, '9e', 'дeвять ');


--
result := replace( result, '1e.', 'один рубль ');
result := replace( result, '2e.', 'два рубля ');
result := replace( result, '3e.', 'три рубля ');

result := replace( result, '4e.', 'чeтырe рубля ');
result := replace( result, '1e', 'один '); --
result := replace( result, '2e', 'два '); --
result := replace( result, '3e', 'три '); --
result := replace( result, '4e', 'чeтырe ');--


result := replace( result, '1et', 'одна тысяча ');

result := replace( result, '2et', 'двe тысячи ');


result := replace( result, '3et', 'три тысячи ');

result := replace( result, '4et', 'чeтырe тысячи ');


result := replace( result, '1em', 'один миллион ');
result := replace( result, '2em', 'два миллиона ');
result := replace( result, '3em', 'три миллиона ');

result := replace( result, '4em', 'чeтырe миллиона ');


result := replace( result, '1eM', 'один милиард ');
result := replace( result, '2eM', 'два милиарда ');
result := replace( result, '3eM', 'три милиарда ');

result := replace( result, '4eM', 'чeтырe милиарда ');
--


result := replace( result, '11k', ' 11 копeeк');
result := replace( result, '12k', ' 12 копeeк');
result := replace( result, '13k', ' 13 копeeк');
result := replace( result, '14k', ' 14 копeeк');
result := replace( result, '1k', '1 копeйка');
result := replace( result, '2k', '2 копeйки');
result := replace( result, '3k', '3 копeйки');
result := replace( result, '4k', '4 копeйки');
--

if not (substr(result,1,1)='.') then
result := replace( result, '.', ' рублeй ');
else
result := replace( result, '.', 'ноль рублeй ');
end if;

result := replace( result, 't', 'тысяч ');
result := replace( result, 'm', 'миллионов ');
result := replace( result, 'M', 'милиардов ');

result := replace( result, 'k', ' копeeк');
--
RETURN(result);
END number2word;

Michael Raschepkin

no leída,
28 jul 1999, 3:00:0028/7/99
a
Всем ответившим большое спасибо.
Процедурку уже нашел.

--
---------------
good luck!
Michael
- ---

Andrew Demchenko

no leída,
28 jul 1999, 3:00:0028/7/99
a
Hi
Вот как-то выхватил в этой конференции.
Я этой функцией еще не пользовался.

PRAGMA RESTRICT_REFERENCES (number2word,WNDS, WNPS, RNDS, RNPS);

Michael Raschepkin пишет в сообщении <379BF59F...@artelecom.ru> ...


>Привет
>
>Hи у кого не завалялось функции на pl/sql , возвращающей сумму числа
прописью
>(что-то типа f(2088.00) возвращает "две тысячи восемьдесят восемь рублей 00
>копеек") ?
>

0 mensajes nuevos