From: | Jasen Betts <jasen(at)xnet(dot)co(dot)nz> |
---|---|
To: | pgsql-novice(at)postgresql(dot)org |
Subject: | Re: Function to spell out a number |
Date: | 2010-11-07 12:10:39 |
Message-ID: | ib64vv$rc0$1@reversiblemaps.ath.cx |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
On 2010-11-04, lists(at)kambanaria(dot)org <lists(at)kambanaria(dot)org> wrote:
> Hi everyone,
> I've checked the manual and a bit online but could not find this:
> Is there a provided function to spell out numbers in Postgres?
yes, cash_words(), it's deprecated.
> (in different languages if possible.)
not sure about that.
> For example:
> to_words(1234) => 'two hundred and thirty four"
> Kind regards:
> al_shopov
CREATE FUNCTION to_words(num integer) RETURNS text
AS $$
DECLARE
str TEXT;
BEGIN
str=cash_words(num * ('1.0'::money));
str=REPLACE(str,' dollars and zero cents','');
str=REPLACE(str,' dollar and zero cents','');
RETURN lower(str);
END;
$$
LANGUAGE plpgsql;
the type 'money' is deprecated, and the string 'dollar'
may be locale dependant so it's probably a bad idea to
do this. This is probably why cash_words is not
mentioned in the 8.4 manual.
http://icu-project.org/apiref/icu4j/com/ibm/icu/text/
May be a better approach, but you'll still need find/write
rulesets, and figure out how to call it from postgres.
if this is for printing cheques just listing the digits
is acceptable in my exerience
to_words(1234) => 'one two three four'
this can done using repeated (or nested) replaces.
--
ɹǝpun uʍop ɯoɹɟ sƃuıʇǝǝɹ⅁
From | Date | Subject | |
---|---|---|---|
Next Message | Mohlomi Moloi | 2010-11-08 07:52:32 | Restaring a dumped database |
Previous Message | Jasen Betts | 2010-11-07 11:14:16 | Re: Describe command alternatives in postgresql |