Sebuah pengalaman ketika melakukan migrasi aplikasi dengan database MSSQL 2000 ke aplikasi dengan database PostgreSQL, ternyata banyak fungsi-fungsi SQL Server yang tidak ada di Postgres, diantaranya fungsi Left, Right, dan Patindex…., kalau Left dan Right bisa diakalin dengan memakai Substring atau Substr tetapi kalau patindex nggak tahu harus pakai apa.., Sedangkan ketika query yang kompleks dengan fungsi-fungsi tersebut, tidaklah mudah untuk memodifikasi query tersebut supaya bisa dijalankan di Postgres….
Akhirnya memutuskan untuk membuat fungsi-fungsi tersebut di PostgreSQL….
Bagi anda yang berpengalaman sama berikut fungsi-fungsi yang dibuat di PostgreSQL.
- PATINDEX
Adalah fungsi yang mengembalikan posisi dari pola/pattern string di dalam string, dan mengembalikan 0 jika pola/pattern tidak ditemukan.
Penggunaan :
patindex(pattern, string)
Execute code berikut di pgAdmin,
CREATE OR REPLACE FUNCTION patindex(strpat text, strstr text)
RETURNS integer AS
$BODY$
declare index_pat integer;
declare i integer;
BEGIN
index_pat = 0;
if (strstr like strpat) then
i = 1;
while (i <= length(strstr) and (substr(strstr,i,length(strstr) – i) like strpat) ) loop
i = i + 1;
end loop;index_pat = i – 1;
end if;
return index_pat;
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE;
ALTER FUNCTION patindex(strpat text, strstr text) OWNER TO postgres;
- RIGHT
Penggunaan :
right(string, integer)
CREATE OR REPLACE FUNCTION “right”(str text, i integer)
RETURNS character varying AS
$BODY$
BEGIN
return substr(str,char_length(str)-i+1,i);
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE;
ALTER FUNCTION “right”(str text, i integer) OWNER TO postgres;
- LEFT
Penggunaan :
left(string, integer)
CREATE OR REPLACE FUNCTION “left”(str text, i integer)
RETURNS character varying AS
$BODY$
BEGIN
return substr(str,1,i);
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE;
ALTER FUNCTION “left”(str text, i integer) OWNER TO postgres;
Semoga bermanfaat bagi anda………