<?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=N%C3%A1hrada_hash_tabulek</id>
	<title>Náhrada hash tabulek - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=N%C3%A1hrada_hash_tabulek"/>
	<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=N%C3%A1hrada_hash_tabulek&amp;action=history"/>
	<updated>2026-05-20T17:37:06Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://postgres.cz/index.php?title=N%C3%A1hrada_hash_tabulek&amp;diff=472&amp;oldid=prev</id>
		<title>imported&gt;Pavel: Nová stránka: Vhodné pouze pro malý počet prvků cca do 100.  &lt;pre&gt; create type keyvalue as (key text, value text);  create or replace function keyvalue_in(text)  returns keyvalue as $$ declare...</title>
		<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=N%C3%A1hrada_hash_tabulek&amp;diff=472&amp;oldid=prev"/>
		<updated>2010-04-04T13:19:22Z</updated>

		<summary type="html">&lt;p&gt;Nová stránka: Vhodné pouze pro malý počet prvků cca do 100.  &amp;lt;pre&amp;gt; create type keyvalue as (key text, value text);  create or replace function keyvalue_in(text)  returns keyvalue as $$ declare...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Vhodné pouze pro malý počet prvků cca do 100.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
create type keyvalue as (key text, value text);&lt;br /&gt;
&lt;br /&gt;
create or replace function keyvalue_in(text) &lt;br /&gt;
returns keyvalue as $$&lt;br /&gt;
declare &lt;br /&gt;
  x text[] := string_to_array($1,&amp;#039;=&amp;gt;&amp;#039;); &lt;br /&gt;
  r keyvalue; &lt;br /&gt;
begin &lt;br /&gt;
  if array_upper(x,1) &amp;lt;&amp;gt; 2 then&lt;br /&gt;
    raise exception &amp;#039;unexpected format for keyvalue value &amp;quot;%&amp;quot;&amp;#039;, $1;&lt;br /&gt;
  end if;&lt;br /&gt;
  r.key := lower(x[1]); r.value := x[2]; &lt;br /&gt;
  return r; &lt;br /&gt;
end; &lt;br /&gt;
$$ language plpgsql immutable strict;&lt;br /&gt;
&lt;br /&gt;
create or replace function keyvalue(variadic varchar[]) &lt;br /&gt;
returns keyvalue[] as $$&lt;br /&gt;
  select array(select keyvalue_in(s) &lt;br /&gt;
                  from unnest($1) g(s)&lt;br /&gt;
              )::keyvalue[]; &lt;br /&gt;
$$ language sql;&lt;br /&gt;
&lt;br /&gt;
postgres=# select keyvalue(&amp;#039;a=&amp;gt;10&amp;#039;,&amp;#039;b=&amp;gt;20&amp;#039;,&amp;#039;c=&amp;gt;40&amp;#039;);&lt;br /&gt;
           keyvalue           &lt;br /&gt;
------------------------------&lt;br /&gt;
 {&amp;quot;(a,10)&amp;quot;,&amp;quot;(b,20)&amp;quot;,&amp;quot;(c,40)&amp;quot;}&lt;br /&gt;
(1 row)&lt;br /&gt;
&lt;br /&gt;
create or replace function valueof(keyvalue[], text) &lt;br /&gt;
returns text as $$&lt;br /&gt;
  select $1[i].value &lt;br /&gt;
     from generate_subscripts($1,1) g(i) &lt;br /&gt;
    where $1[i].key = $2 &lt;br /&gt;
    limit 1&lt;br /&gt;
$$ language sql;&lt;br /&gt;
&lt;br /&gt;
postgres=# select valueof(keyvalue(&amp;#039;a=&amp;gt;10&amp;#039;,&amp;#039;b=&amp;gt;20&amp;#039;,&amp;#039;c=&amp;gt;40&amp;#039;),&amp;#039;a&amp;#039;);&lt;br /&gt;
 valueof &lt;br /&gt;
---------&lt;br /&gt;
 10&lt;br /&gt;
(1 row)&lt;br /&gt;
&lt;br /&gt;
postgres=# select valueof(array(select (proname, prosrc)::keyvalue &lt;br /&gt;
                                   from pg_proc&lt;br /&gt;
                               ),&lt;br /&gt;
                          &amp;#039;valueof&amp;#039;);&lt;br /&gt;
                  valueof                  &lt;br /&gt;
-------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
   select $1[i].value &lt;br /&gt;
      from generate_subscripts($1,1) g(i) &lt;br /&gt;
     where $1[i].key = $2 &lt;br /&gt;
     limit 1&lt;br /&gt;
 &lt;br /&gt;
(1 row)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Pavel</name></author>
	</entry>
</feed>