48 lines
1.2 KiB
MySQL
48 lines
1.2 KiB
MySQL
|
CREATE OR REPLACE FUNCTION basename(fullpath text,
|
||
|
suffix text DEFAULT NULL,
|
||
|
separator char DEFAULT '/')
|
||
|
RETURNS text AS
|
||
|
$$
|
||
|
DECLARE
|
||
|
basename text;
|
||
|
suffixre text;
|
||
|
separare text;
|
||
|
BEGIN
|
||
|
separare := '^.*' || separator;
|
||
|
basename := regexp_replace(fullpath, separare, '');
|
||
|
IF suffix IS NOT NULL THEN
|
||
|
suffixre := suffix + '$';
|
||
|
basename := regexp_replace(basename, suffixre, '');
|
||
|
END IF;
|
||
|
RETURN basename;
|
||
|
END;
|
||
|
$$
|
||
|
LANGUAGE 'plpgsql' IMMUTABLE;
|
||
|
|
||
|
|
||
|
CREATE OR REPLACE FUNCTION dirname(fullpath text,
|
||
|
separator char DEFAULT '/')
|
||
|
RETURNS text AS
|
||
|
$$
|
||
|
DECLARE
|
||
|
separare text;
|
||
|
dirname text;
|
||
|
compname text;
|
||
|
BEGIN
|
||
|
IF position(separator in fullpath) = 0 THEN
|
||
|
return '';
|
||
|
END IF;
|
||
|
separare := '^(.*' || separator || ').*$';
|
||
|
dirname = regexp_replace(fullpath, separare, '\1');
|
||
|
IF length(dirname) != 0 THEN
|
||
|
compname := lpad('', length(dirname), separator);
|
||
|
IF compname != dirname THEN
|
||
|
dirname = rtrim(dirname, separator);
|
||
|
END IF;
|
||
|
END IF;
|
||
|
return dirname;
|
||
|
END;
|
||
|
$$
|
||
|
LANGUAGE 'plpgsql' IMMUTABLE;
|
||
|
|