Marcin.Miga
2019-01-11 13:17

Dziś takie cudeńko w bazie znalazłem (sam je zresztą swego czasu napisałem...)

CREATE OR REPLACE FUNCTION xxx(IN text)  RETURNS TABLE(wartosc text) AS
$BODY$ 
with"t"as(select($1)"w"),"r"as(select"regexp_matches"(w,E'i:(\\d+);.:(\\d+);','g')"r"from"t")select(r::text[])[2]from"r" 
$BODY$
  LANGUAGE sql VOLATILE

wewnątrz SQL nie ma spacji :)
#postgreSQL

Marcin.Miga

@WeiXiao: funkcja ma zwracać dla zserializowanej w PHP tablicy intów wartości elementów tablicy. Czy dla np.`a:4:{i:0;i:21;i:1;i:33;i:2;i:45;i:3;i:123}' zwróci 4 rekordy: 21, 33,45 i 123

Marcin.Miga
2017-04-21 19:17

Był iloczyn kartezjański, to jeszcze taki przykład. (WSZYSTKIE moje przykłady, o ile nie zaznaczę inaczej są na #postgreSQL)

SELECT * FROM unnest(array[1,2]) x

Zwraca dwa rekordy - zamienia tablicę na poszczególne rekordy. Czyli analogicznie:

SELECT * FROM unnest(array[1,2]) x, unnest(array[1,2,3,4,5,6]) y

zwróci 12 rekordów: 2x6
Ale ..

SELECT  unnest(array[1,2]) x, unnest(array[1,2,3,4,5,6]) y

nie zwraca 12 rekordów, tylko 6! :) Tej składni możemy użyć do wyszukiwania NWW, gdybyśmy czasem chcieli robić to bazą danych... :)
Np. NWW 16 i 34 (nie wiem...):

select count(*) from
(
select generate_series(1,16), generate_series(1,34)
) x

wynik - 272. (muszę sprawdzić - =NAJMN.WSP.WIEL(16;34) z Excela daje taki sam wynik :))

Julian_

a jaki jest odpowiednik unnest i array w Oraclu albo MS SQL? bo pierwszy raz takie coś widzę.

Marcin.Miga

Posługuję się tu unnest() + array[], albo dla liczb generate_series(), bo te funkcje najszybciej robią mi zbiór rekordów. Możesz oczywiście użyć tabel, jako parametrów wejściowych.

Adam Boduch
2016-03-02 08:53

Minął 5 miesiąc pracy nad nową wersją 4programmers.net. Mimo, że pracuje nad projektem niemal codziennie, mimo, że założyłem, że będzie skończony w I kwartale tego roku, to jeszcze sporo zostało do końca :(

Nie o tym jednak miałem pisać. Zrobiłem migrację starej bazy (z MySQL) na PostgreSQL. Struktura tabel jest bardzo podobna. Ku mojemu zaskoczeniu, MySQL (5.5) jest szybsze niż PostgreSQL (9.6), niemal w każdym zapytaniu. Co prawda różnice nie są zbyt duże, ale na bardziej czasochłonnych zapytaniach MySQL wygrywa czasem 20-30 ms na zapytaniu.

#4programmers.net #coyote #mysql #postgresql

Phestek

@NoZi: dlatego bierzesz Archa z czym chcesz?

NoZi

@Phestek: czemu mam sie meczyc z archem?

Adam Boduch
2014-03-24 10:36

Taka ciekawostka: rekurencyjne zapytania w Postgres: http://practiceovertheory.com[...]recursive-query-is-recursive/

#postgresql

Adam Boduch

@bordeux: Wydajność postgresa mile zaskakuje :) Z mojego doświadczenia wynika, że postgres jest jednak mniej user friendly od MySQL. Nie znalazłem też dobrego narzędzia GUI (pod Windowsa) do pracy z tą bazą. Chyba, że Ty możesz coś polecić? :)

bordeux

@bordeux: Wydajność postgresa mile zaskakuje :) Z mojego doświadczenia wynika, że postgres jest jednak mniej user friendly od MySQL. Nie znalazłem też dobrego narzędzia GUI (pod Windowsa) do pracy z tą bazą. Chyba, że Ty możesz coś polecić? :)

@Adam Boduch: właśnie z tym jest problem, tez nie potrafię znaleźć czegoś dobrego. Na dzień dzisiejszy, używam GUI od netbeansa (w zakładce services można ustawić bazę danych), natomiast jeśli chodzi o modyfikacje kolumn, dodanie nowych, edycje triggerow, funkcji, to używam phpPgAdmin.
Na początku ten phpPgAdmin wydawał się dosyć dziwny, bo niby klon phpMyAdmina, a się różnił stanowczo - ale phAdmin jest bardziej rozbudowany, i można się przyzwyczaić.

Adam Boduch
2013-11-12 09:04

Wiedzieliście, że w PostgreSQL możemy utworzyć kolumnie o typie json? I w SQL-u można odczytywać wartość konkretnego elementu obiektu JSON-a:

https://functionwhatwhat.com/json-in-postgresql/
#postgresql #json

Koziołek

@Adam Boduch: no... http://www.depesz.com/?s=json cały blog fajny. Pracowałem kiedyś z tym gościem i jak dla mnie największy wymiatacz postgresa w PL ever.