<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=Transformace_%C4%8D%C3%A1stky_%28%C4%8D%C3%ADsla%29_na_slovn%C3%AD_vyj%C3%A1d%C5%99en%C3%AD</id>
	<title>Transformace částky (čísla) na slovní vyjádření - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=Transformace_%C4%8D%C3%A1stky_%28%C4%8D%C3%ADsla%29_na_slovn%C3%AD_vyj%C3%A1d%C5%99en%C3%AD"/>
	<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=Transformace_%C4%8D%C3%A1stky_(%C4%8D%C3%ADsla)_na_slovn%C3%AD_vyj%C3%A1d%C5%99en%C3%AD&amp;action=history"/>
	<updated>2026-05-12T22:47:03Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://postgres.cz/index.php?title=Transformace_%C4%8D%C3%A1stky_(%C4%8D%C3%ADsla)_na_slovn%C3%AD_vyj%C3%A1d%C5%99en%C3%AD&amp;diff=358&amp;oldid=prev</id>
		<title>imported&gt;WikiSysop v 13. 10. 2007, 19:53</title>
		<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=Transformace_%C4%8D%C3%A1stky_(%C4%8D%C3%ADsla)_na_slovn%C3%AD_vyj%C3%A1d%C5%99en%C3%AD&amp;diff=358&amp;oldid=prev"/>
		<updated>2007-10-13T19:53:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;K získání slovního vyjádření číselné hodnoty lze použít následující funkci. Číslo je zobrazeno bez mezer (ve tvaru určeném pro složenky). Rozsah funkce je 1..999 999 999. Inspirováno Ondřejem Vanišem, autor Pavel Stěhule.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE FUNCTION to_char_nw(int)&lt;br /&gt;
RETURNS varchar AS $$&lt;br /&gt;
DECLARE dict varchar[][] = ARRAY[&lt;br /&gt;
                                 ARRAY[&amp;#039;jedna&amp;#039;,&amp;#039;dva&amp;#039;,&amp;#039;tři&amp;#039;,&amp;#039;čtyři&amp;#039;,&amp;#039;pět&amp;#039;,&amp;#039;šest&amp;#039;,&amp;#039;sedm&amp;#039;,&amp;#039;osm&amp;#039;,&amp;#039;devět&amp;#039;],&lt;br /&gt;
                                 ARRAY[&amp;#039;&amp;#039;,&amp;#039;dvacet&amp;#039;,&amp;#039;třicet&amp;#039;,&amp;#039;čtyřicet&amp;#039;,&amp;#039;padesát&amp;#039;,&amp;#039;šedesát&amp;#039;,&amp;#039;sedmdesát&amp;#039;,&amp;#039;osmdesát&amp;#039;,&amp;#039;devadesát&amp;#039;],&lt;br /&gt;
                                 ARRAY[&amp;#039;sto&amp;#039;,&amp;#039;dvěstě&amp;#039;,&amp;#039;třista&amp;#039;,&amp;#039;čtyřista&amp;#039;,&amp;#039;pětset&amp;#039;,&amp;#039;šestset&amp;#039;,&amp;#039;sedmset&amp;#039;,&amp;#039;osmset&amp;#039;,&amp;#039;devětset&amp;#039;],&lt;br /&gt;
                                 ARRAY[&amp;#039;tisíc&amp;#039;,&amp;#039;tisíce&amp;#039;,&amp;#039;tisíce&amp;#039;,&amp;#039;tisíce&amp;#039;,&amp;#039;tisíc&amp;#039;,&amp;#039;tisíc&amp;#039;,&amp;#039;tisíc&amp;#039;,&amp;#039;tisíc&amp;#039;,&amp;#039;tisíc&amp;#039;],&lt;br /&gt;
                                 ARRAY[&amp;#039;milion&amp;#039;,&amp;#039;miliony&amp;#039;,&amp;#039;miliony&amp;#039;,&amp;#039;miliony&amp;#039;,&amp;#039;milionů&amp;#039;,&amp;#039;milionů&amp;#039;,&amp;#039;milionů&amp;#039;,&amp;#039;milionů&amp;#039;,&amp;#039;milionů&amp;#039;]&lt;br /&gt;
                                ];&lt;br /&gt;
        dict20 varchar[] = ARRAY[&amp;#039;deset&amp;#039;,&amp;#039;jedenáct&amp;#039;,&amp;#039;dvanáct&amp;#039;,&amp;#039;třínáct&amp;#039;,&amp;#039;čtrnáct&amp;#039;,&lt;br /&gt;
                                 &amp;#039;patnáct&amp;#039;,&amp;#039;šestnáct&amp;#039;,&amp;#039;sedmnáct&amp;#039;,&amp;#039;osmnáct&amp;#039;,&amp;#039;devatenáct&amp;#039;];&lt;br /&gt;
  accu varchar = &amp;#039;&amp;#039;;&lt;br /&gt;
  auxi int = $1;&lt;br /&gt;
  stack int;&lt;br /&gt;
BEGIN&lt;br /&gt;
  WHILE auxi &amp;gt; 0 OR stack IS NOT NULL LOOP&lt;br /&gt;
    stack := COALESCE(stack, CASE WHEN auxi &amp;gt;= 1000&lt;br /&gt;
                                  THEN auxi&lt;br /&gt;
                                  ELSE NULL END);&lt;br /&gt;
    auxi := CASE WHEN auxi &amp;gt;= 1000000&lt;br /&gt;
                 THEN auxi/1000000&lt;br /&gt;
                 WHEN auxi &amp;gt;= 1000&lt;br /&gt;
                 THEN auxi/1000&lt;br /&gt;
                 ELSE auxi END;&lt;br /&gt;
    accu := accu || CASE WHEN auxi &amp;gt;= 100&lt;br /&gt;
                         THEN dict[3][auxi/100]&lt;br /&gt;
                         WHEN auxi &amp;gt;= 20&lt;br /&gt;
                         THEN dict[2][auxi/10]&lt;br /&gt;
                         WHEN auxi &amp;gt;= 10&lt;br /&gt;
                         THEN dict20[auxi - 9]&lt;br /&gt;
                         ELSE CASE WHEN stack IS NULL&lt;br /&gt;
                                   THEN dict[1][auxi]&lt;br /&gt;
                                   WHEN stack &amp;gt;= 1000000&lt;br /&gt;
                                   THEN CASE WHEN (stack/1000000) = 1&lt;br /&gt;
                                        THEN &amp;#039;jeden&amp;#039;&lt;br /&gt;
                                        ELSE dict[1][auxi] END&lt;br /&gt;
                                   WHEN stack &amp;gt;= 1000&lt;br /&gt;
                                   THEN CASE WHEN (stack/1000 % 10) = 1&lt;br /&gt;
                                        THEN &amp;#039;jeden&amp;#039;&lt;br /&gt;
                                        ELSE dict[1][auxi] END&lt;br /&gt;
                              END&lt;br /&gt;
                    END;&lt;br /&gt;
    auxi := CASE WHEN auxi &amp;gt;= 100&lt;br /&gt;
                 THEN auxi % 100&lt;br /&gt;
                 WHEN auxi &amp;gt;= 20&lt;br /&gt;
                 THEN auxi % 10&lt;br /&gt;
                 ELSE 0 END;&lt;br /&gt;
    IF stack IS NOT NULL AND auxi = 0 THEN&lt;br /&gt;
      SELECT INTO&lt;br /&gt;
             accu, auxi, stack&lt;br /&gt;
             accu || CASE WHEN stack &amp;gt;= 10000000&lt;br /&gt;
                          THEN &amp;#039;miliónů&amp;#039;&lt;br /&gt;
                          WHEN stack &amp;gt;= 1000000&lt;br /&gt;
                          THEN dict[5][stack/1000000]&lt;br /&gt;
                          WHEN stack &amp;gt;= 10000&lt;br /&gt;
                          THEN &amp;#039;tisíc&amp;#039;&lt;br /&gt;
                          WHEN stack &amp;gt;= 1000&lt;br /&gt;
                          THEN dict[4][stack/1000] END,&lt;br /&gt;
             CASE WHEN stack &amp;gt;= 1000000&lt;br /&gt;
                  THEN stack % 1000000&lt;br /&gt;
                  WHEN stack &amp;gt;= 1000&lt;br /&gt;
                  THEN stack % 1000 END,&lt;br /&gt;
             NULL;&lt;br /&gt;
    END IF;&lt;br /&gt;
  END LOOP;&lt;br /&gt;
  RETURN CASE WHEN accu &amp;lt;&amp;gt; &amp;#039;&amp;#039;&lt;br /&gt;
              THEN accu&lt;br /&gt;
              ELSE &amp;#039;nula&amp;#039; END;&lt;br /&gt;
  RETURN accu;&lt;br /&gt;
END;&lt;br /&gt;
$$ LANGUAGE plpgsql;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Použití:&lt;br /&gt;
&amp;lt;pre&amp;gt;postgres=# SELECT to_char_nw(21021);&lt;br /&gt;
         to_char_nw&lt;br /&gt;
-----------------------------&lt;br /&gt;
 dvacetjedentisícdvacetjedna&lt;br /&gt;
(1 row)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;WikiSysop</name></author>
	</entry>
</feed>