![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Heja,
jak w PostgreSQL 8.3 odczytać rozmiar tablicy? W 8.4 mamy już funkcję array_length(), ale w 8.3 jej nie ma. Albo inaczej: mając ciąg: Kod a/b/c chciałbym pobrać "poziom zagłębienia" czyli ilość elementów po rozdzieleniu po "/" (w tym przypadku 3). Przeglądałem funkcje na stringach, ale również nie znalazłem niczego pomocnego. Pozdrawiam, pion // Edit: Na razie napisałem sobie taką funkcję, może komuś się przyda:
Olałem drugi parametr bo nie jest mi potrzebny. Ten post edytował phpion 26.05.2010, 08:08:21 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Druga opcja
Ale twoje rozwiązanie też działa. Ten post edytował wookieb 26.05.2010, 08:32:16 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Hmmm, a jak Twoje rozwiązanie sprawdzi się przy wybieraniu rekordów z tabeli oraz określaniu ich poziomu zagłębienia? W tabeli mam kolumnę name, a niej ciągi wpisane właśnie jako a/b/c i do każdego rekordu chciałbym dołączyć głębokość zagnieżdżenia.
W międzyczasie zobaczyłem, że edytowałeś swojego posta dopisując drugie rozwiązanie. Ono jest OK! Porównałem czasy wykonania Twojego, oraz mojego bazującego na własnej funkcji - Twoje jest 2x szybsze! Dzięki! // Edit: A to jest jeszcze szybsze:
Zmieniłem regexp_split_to_array na string_to_array i czas wykonania spadł o ~0.2 ms - zawsze to coś! ![]() Ten post edytował phpion 26.05.2010, 08:43:09 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Pomijając już kwestię tablic, to parametr depth (czyli poziom zagłębienia) powinno się trzymać w dodatkowej kolumnie, ponieważ trochę bez sensu jest przeliczanie tego za każdym razem a uwierz mi, że parametr ten bardzo się przydaje.
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
No u mnie akurat nie jest on często wykorzystywany (w zasadzie to tylko raz i to na dodatek w sekcji administracyjnej na niewielkiej liczbie danych ( > 100)). Rozważałem utworzenie nowego pola i aktualizacja jego wartości triggerem, ale byłoby to bez sensu, przerost formy nad treścią.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Imo dla mnie bezsensu jest tworzenie ścieżki na takich stylach, przecież możesz sobie ją trzymać w VARCHAR[] w postaci: '{a,b,c}' i nie masz problemu. W dodatku jest na prawdę dużo funkcji do pracy na tabliach i ideks GITS albo GIST nie chce mi się szukać w google a nie pamiętam teraz, może b.przyśpieszyć pracę na takich elementach.
-------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:44 |