【PostgreSQL】ファイルパス(フルパス)からファイル名を取得する

PostgreSQL自作関数

ファイルパス(フルパス)からファイル名を取得する

ファイルパス(フルパス)からファイル名(拡張子付き)を取得します。

 

具体的には、後ろから'\'を検索し、その位置+1の文字から最後までを取得します。

「D:\folder1\folder2\text123.txt」(下線の部分を取得)

 

 

引数

引数1(character varying):ファイルパスの文字列(フルパス)

 

返り値

ファイル名(拡張子付き)

 

コード

CREATE OR REPLACE FUNCTION get_filename(character varying)
  RETURNS character varying AS
$BODY$
declare

	full_path	alias for $1;		--引数1:ファイルパスの文字列(フルパス)

begin

	return substring(full_path,lastindexof(full_path,'\')+1,length(full_path));
	
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION get_filename(character varying)
  OWNER TO postgres;

※ PostgreSQL12で動作確認済み

※ この関数では「lastindexof」という関数が必要です。

 

実行例

select * From get_filename('D:\folder1\folder2\text123.txt');
-- text123.txt