|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
PostgreSQL (18) - Datový typ pole IIV minulém dílu seriálu jsme se seznámili s datovým typem pole, který PostgreSQL ovládá a v tomto díle je na čase podívat se podrobněji na práci s tímto typem, zejména pak z hlediska vestavěných obslužných funkcí.
V příkazu SELECT můžete pole použít nejen v části WHERE, ale i při běžném výběru sloupců, které mají být z datové věty vybrány. I v tomto případě je zápis stejný jako v části WHERE, do hranatých závorek se píše buď přímo prvek, který chcete nebo rozsah oddělený dvojtečkou ve tvaru [dolni_index:horni_index]. Rozsahem lze zapsat i výběr jediného prvku z pole, ale v tom případě jsou oba indexy stejné. Pro příklady tohoto dílu bude použita databázová tabulka, která byla vytvořena v minulém díle. Potřebná data jsou v počátečním stavu tato: INSERT INTO employees_pays VALUES (23, '{0.00,15075.00,11630.00}', Pro výběry poskytuje PostgreSQL několik zajímavých funkcí, které práci s polem usnadní. Pokud je zapotřebí zjistit aktuální rozměry pole pro každý řádek extra (jak bylo napsáno minule, zatím v PgSQL není nijak vyžadováno dodržování rozměrů polí), poslouží funkce array_dims. Její použití je jednoduché, postačí pouze název sloupečku jehož rozměry jsou potřeba získat, předat jako parametr této funkce. Návratová hodnota bude typu text, například: SELECT ARRAY_DIMS(last3_tax_insurance), employee_id FROM employees_pays; Pokud je zapotřebí vybrat první, nebo poslední prvek z pole, přičemž nejsou známy rozměry (tj. počet již zadaných prvků), poslouží 2 funkce - array_lower, pro získání indexu prvního prvku v poli a array_upper, pro získání indexu posledního prvku v poli. První parametr této funkce je jméno pole a druhý je dimenze (v případě vícerozměrného pole), jejíž minimální/maximální je zapotřebí. Opět bude vše mnohem jasnější z příkladů: select array_lower(last3_tax_insurance), employee_id from employees_pays; Výše
uvedené funkce, zejména array_upper, mohou posloužit, když je zapotřebí
při updatu datové věty přidat další hodnotu (s indexem vyšším, než je
nejvyšší index pole). Toto přidání lze provést jen s polem, které má
jedinou dimenzi, alespoň zatím, ve verzi 8.x (včetně nejnovější 8.1).
Sekvence pro přidání hodnoty do pole je tato: Při výstupu dat z pole nebo jejich zadávání z externího programu se často hodí funkce pro předání ne ve tvaru pole, ale ve formátu s vlastními oddělovači, například '|' (svislítko, roura). PgSQL přímo nabízí dvojici funkcí array_to_string(pole, oddělovač), která z pole udělá řetězec oddělený Vaším zvoleným oddělovačem a string_to_array(řetězec, řetězec), která první řetězec rozdělí při použití druhého řetězce, jako oddělovače. Oddělovač nemusí být jen jednoznakový, ale sekvence :-) také poslouží. -- preformatovany vystup z pole do retezce PgSQL poskytuje několik funkcí a operátorů pro spojování několika polí dohromady. První z nich je dvojice array_append a array_prepend pro připojení (skalární) hodnoty k poli. Array_append připojí tuto proměnnou k poli zezadu a array_prepend zepředu, paramtery jsou pole a prvek k připojení v pořadí, jak se spojují. Pole se dají spojit pomocí funkce array_cat, kde parametry jsou dvě pole určená ke spojení a výstupem je nové, již spojené pole. Stejného efektu spojení polí i prvků lze docílit operátorem '||'. -- pripojeni skalaru za pole pomoci funkce -- spojeni dvou poli operatorem Pro porovnání dvou polí lze použít běžné porovnávací operátory <, >, <=, >=, funguje zde takzvané slovníkové řazení, tj. {1,3,2}>{1,2,3}. ZávěrTímto druhým dílem jsme uzavřeli téma polí. Pokud Vás zajímá k čemu pole v databázi použít, tak to jsou právě ty průměry a měsíční průběhy mezd, nebo třeba známky hodnotící studenty ;-). V příštím díle se podíváme na strukturované datové typy.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |