ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
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.
Související články
Předchozí Celou kategorii (seriál) Další
PostgreSQL (1) - Historie a pohledy jinam
PostgreSQL (2) - Proč PgSQL, data a relace PostgreSQL (3) - Instalace, základní administrace PostgreSQL (4) - Datové typy, vytvoření tabulek PostgreSQL (5) - Další datové typy a práce s časem i binarními řetězci PostgreSQL (6) - Uložení, aktualizace a mazání dat. PostgreSQL (7) - Výběr dat z databáze PostgreSQL (8) - SELECT II. PostgreSQL (9) – SELECT III PostgreSQL (10) - SELECT IV PostgreSQL (11) - Výběr pomocí vzorků PostgreSQL 12 - urychlení výběrů PostgreSQL (13) - Na co se zapomnělo PostgreSQL (14) - omezení dat (Constraints) PostgreSQL (15) - Transakce PostgreSQL (16) - Zamykání PostgreSQL (17) - Datový typ pole PostgreSQL (19) - Vlastní datové typy PostgreSQL (20) - Vlastní datové typy II PostgreSQL (21) - Spojování dotazů PostgreSQL (22) - Poddotazy PostgreSQL (23) - Optimalizujeme rychlost PostgreSQL (24) - Views (Pohledy) PostgreSQL (25) - Administrace skupin a uživatelů PostgreSQL (26) - Rozšiřujeme funkčnost Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |