Tag Archive for 'postgres'

Fungsi String: Split Berdasarkan Karakter

Basic SQL, pada , untuk memisahkan menjadi dua. Untuk memecah menjadi dua baris data bisa menggunakan fungsi regexp_split_to_table.

Misal saya mau memisahkan “kaskus/detik” pada field KOLOM berdasarkan karakter “/”

regexp_split_to_table(KOLOM, E'\\/+')

Hasil (2 baris):

kaskus

detik

——————————————-

Menggunakan fungsi . Merupakan fungsi dari , create dulu di postgres.

Mengambil string di depan “/” :

SUBSTR(KOLOM, 1 ,INSTR(KOLOM, '/', 1, 1)-1)

Mengambil string di belakang “/”

SELECT SUBSTR(KOLOM,INSTR(KOLOM, '/', 1, 1)+1)

Porting Fungsi INSTR Oracle ke Postgres

This is just a note on the blog… numpang catatan :p

PORTING FUNGSI INSTR ORACLE KE POSTGRES
 
-------------------
This section contains the code for a set of Oracle-compatible instr functions that you can use to simplify your porting efforts.
 
--
-- instr functions that mimic Oracle's counterpart
-- Syntax: instr(string1, string2, [n], [m]) where [] denotes optional parameters.
--
-- Searches string1 beginning at the nth character for the mth occurrence
-- of string2.  If n is negative, search backwards.  If m is not passed,
-- assume 1 (search starts at first character).
--
 
CREATE FUNCTION instr(varchar, varchar) RETURNS integer AS $$
DECLARE
    pos integer;
BEGIN
    pos:= instr($1, $2, 1);
    RETURN pos;
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
 
CREATE FUNCTION instr(string varchar, string_to_search varchar, beg_index integer)
RETURNS integer AS $$
DECLARE
    pos integer NOT NULL DEFAULT 0;
    temp_str varchar;
    beg integer;
    length integer;
    ss_length integer;
BEGIN
    IF beg_index > 0 THEN
        temp_str := substring(string FROM beg_index);
        pos := position(string_to_search IN temp_str);
 
        IF pos = 0 THEN
            RETURN 0;
        ELSE
            RETURN pos + beg_index - 1;
        END IF;
    ELSE
        ss_length := char_length(string_to_search);
        length := char_length(string);
        beg := length + beg_index - ss_length + 2;
 
        WHILE beg > 0 LOOP
            temp_str := substring(string FROM beg FOR ss_length);
            pos := position(string_to_search IN temp_str);
 
            IF pos > 0 THEN
                RETURN beg;
            END IF;
 
            beg := beg - 1;
        END LOOP;
 
        RETURN 0;
    END IF;
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
 
CREATE FUNCTION instr(string varchar, string_to_search varchar,
                      beg_index integer, occur_index integer)
RETURNS integer AS $$
DECLARE
    pos integer NOT NULL DEFAULT 0;
    occur_number integer NOT NULL DEFAULT 0;
    temp_str varchar;
    beg integer;
    i integer;
    length integer;
    ss_length integer;
BEGIN
    IF beg_index > 0 THEN
        beg := beg_index;
        temp_str := substring(string FROM beg_index);
 
        FOR i IN 1..occur_index LOOP
            pos := position(string_to_search IN temp_str);
 
            IF i = 1 THEN
                beg := beg + pos - 1;
            ELSE
                beg := beg + pos;
            END IF;
 
            temp_str := substring(string FROM beg + 1);
        END LOOP;
 
        IF pos = 0 THEN
            RETURN 0;
        ELSE
            RETURN beg;
        END IF;
    ELSE
        ss_length := char_length(string_to_search);
        length := char_length(string);
        beg := length + beg_index - ss_length + 2;
 
        WHILE beg > 0 LOOP
            temp_str := substring(string FROM beg FOR ss_length);
            pos := position(string_to_search IN temp_str);
 
            IF pos > 0 THEN
                occur_number := occur_number + 1;
 
                IF occur_number = occur_index THEN
                    RETURN beg;
                END IF;
            END IF;
 
            beg := beg - 1;
        END LOOP;
 
        RETURN 0;
    END IF;
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;

Keanehan hari ini …. :(

Keanehan hari ini…

Service di laptop tau-tau nggak mau jalan, padahal sebelumnya service Postgres juga masih ngambek. Kalo di start langsung stop lagi, “…. Some services stop automatically if they have no work to do ….” :( But I have work to do! :( Setelah di uninstall/install ulang masih sama juga. Restore file konfigurasi juga nihil hasilnya. Sementara ini pake Postgres dari PC tetangga dulu dech :( Update 28 Maret 2008 : Postgres dah normal lagi :D

Hari ini Flock juga lagi ngambek. Crash terus setelah install addon bernama Firebug. Setelah addon tadi di-disable, maupun di uninstall masih crash juga. Jadi inget dulu waktu Firefox ngambek kayak gini, bisa beres dengan sendirinya. Problem ini, kalo lihat lognya di Event Viewer hampir mirip dengan problem Crash Mdaemon yang juga pernah saya alami dulu *disama-samain hehehe…*. Waktu itu Mdaemon dalam sehari bisa Crash berkali-kali. Setelah bolak-balik didowngrade-upgrade juga masih ngambek terus. Terakhir, di clean install ulang, masih ngambek juga. Baru kemudian diupgrade lagi tau-tau sudah ok. Dulu waktu crash, dengan menutup salah satu tab halaman situs yang terakhir dibuka baru bisa normal lagi. Benar aja! Setelah semua tab pada Flock ditutup normal lagi deh. Coba install lagi addon Firebug, Flock sekarang tetep jalan normal :D

Apache akhirnya beres juga. Karena saya penggemarnya XAMPP saya mau coba upgrade ajah sekalian. Versi yang sekarang saya pake 1.6.3a. Versi terakhir yang sudah dirilis 1.6.6a. Jadinya download upgrade installer 1.6.3-1.6.4, 1.6.4-1.6.5, dan 1.6.5-1.6.6. Upgrade selesai, Apache coba distart masih belum ok juga. Setelah Windusnya direstart… Viola! Apache dah normal dech. Alhamdulillah.

Tags: , , , , ,