- 2019/09/25 Wed
-
ハナマサのチキンタツタサンドめちゃ重い。胃に。
SQLite( or PostgreSQL)でファイルパスからファイル名だけを取得する。 - Code for final
http://final.hateblo.jp/entry/2016/09/11/180012これによると以下のようにすればOKということらしいです。
select replace(filepath, rtrim(filepath, replace(filepath, '\', '')), '') from table;
ほんとにとれました。
rtrimを使うなんて凡人にはできない発想ですね。
しかも1つずつ分解して考えてもどういうことなのかよくわからない。。
ぱっと見で「なんで?」と思ったけど、rtrim は "文字セットに含まれない文字が出現するまで削除" することを利用しているのか。select replace('foobarbar', 'bar', ''); -- foo select replace('fooBarbar', 'bar', ''); -- fooBar select rtrim('foobarbar', 'bar'); -- foo select rtrim('fooBarbar', 'bar'); -- fooB
てことで、元記事のSQLは
①パスから区切り文字を削除
②パスから①を rtrim すると一番右の区切り文字手前まで削除される(=ファイル名が除去される)
③パスから②を削除するとファイル名だけ残る
なるほど。
全然関係ないこと調べてる最中に見かけて「へー」と思ったのでメモ。