わいえむねっと

Contents
Categories
Calendar
2019/09
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.048 sec
Chashed: -
2019/09/25 Wed
ハナマサのチキンタツタサンドめちゃ重い。胃に。 全然関係ないこと調べてる最中に見かけて「へー」と思ったのでメモ。

SQLite( or PostgreSQL)でファイルパスからファイル名だけを取得する。 - Code for final
http://final.hate​blo.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 すると一番右の区切り文字手前まで削除される(=ファイル名が除去される)
③パスから②を削除するとファイル名だけ残る

なるほど。