CREATE FUNCTION numero_a_texto(INTEGER) RETURNS text LANGUAGE SQL IMMUTABLE STRICT AS
$$
 --sin tildes por portabilidad
 SELECT CASE WHEN $1<1 THEN NULL
              WHEN $1=1 THEN 'UNO'
              WHEN $1=2 THEN 'DOS'
              WHEN $1=3 THEN 'TRES'
              WHEN $1=4 THEN 'CUATRO'
              WHEN $1=5 THEN 'CINCO'
              WHEN $1=6 THEN 'SEIS'
              WHEN $1=7 THEN 'SIETE'
              WHEN $1=8 THEN 'OCHO'
              WHEN $1=9 THEN 'NUEVE'
              WHEN $1=10 THEN 'DIEZ'
              WHEN $1=11 THEN 'ONCE'
              WHEN $1=12 THEN 'DOCE'
              WHEN $1=13 THEN 'TRECE'
              WHEN $1=14 THEN 'CATORCE'
              WHEN $1=15 THEN 'QUINCE'
-- WHEN $1=16 THEN 'DIECISÉIS'
              WHEN $1<20 THEN 'DIECI' || numero_a_texto($1%10)
              WHEN $1=20 THEN 'VEINTE'
-- WHEN $1=22 THEN 'VEINTIDÓS'
-- WHEN $1=23 THEN 'VEINTITRÉS'
              WHEN $1<30 THEN 'VEINTI' || numero_a_texto($1%10)
              WHEN $1<40 THEN 'TREINTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1<50 THEN 'CUARENTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1<60 THEN 'CINCUENTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1<70 THEN 'SESENTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1<80 THEN 'SETENTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1<90 THEN 'OCHENTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1<100 THEN 'NOVENTA' || COALESCE(' Y ' || numero_a_texto($1%10), '')
              WHEN $1=100 THEN 'CIEN'
			  WHEN $1<200 THEN 'CIENTO' || COALESCE( ' ' || numero_a_texto($1%100), '')
			  WHEN $1>499 AND $1<600 THEN 'QUINIENTOS' || COALESCE( ' ' || numero_a_texto($1%100), '')
			  WHEN $1>699 AND $1<800 THEN 'SETECIENTOS' || COALESCE( ' ' || numero_a_texto($1%100), '')
			  WHEN $1<900 THEN numero_a_texto($1/100)|| 'CIENTOS' || COALESCE( ' ' || numero_a_texto($1%100), '')
			  WHEN $1<1000 THEN 'NOVECIENTOS' || COALESCE( ' ' || numero_a_texto($1%100), '')
			  WHEN $1<2000 THEN 'MIL' || COALESCE(' ' ||numero_a_texto($1%1000), '')
			  WHEN $1<1000000 THEN numero_a_texto($1/1000) || ' MIL' || COALESCE(' ' ||numero_a_texto($1%1000), '')
-- WHEN $1<2000000 THEN 'UN MILLÓN' || COALESCE(' ' || numero_a_texto($1%1000000), '')
			  WHEN $1<2000000 THEN 'UN MILLON' || COALESCE(' ' || numero_a_texto($1%1000000), '')
			  WHEN $1<1000000000000 THEN numero_a_texto($1/1000000) || ' MILLONES' || COALESCE(' ' || numero_a_texto($1%1000000), '')
              ELSE NULL
         END$$;
