如何在SQLite中获取子字符串的最后一个索引?

cha*_*m15 9 sqlite

我在表格中有一个字符串:http://www.foo.com/hello/bar/baz我希望获得最后一个'/'之后的所有内容(在本例中为字符串'baz').

我可以做substr(str,lastIndexOf(str,'/')),但我不知道如何在SQLite中获取lastIndexOf.

ung*_*rys 29

select replace(str, rtrim(str, replace(str, '/', '')), '') from table;
Run Code Online (Sandbox Code Playgroud)

说明:

例如我们有字符串: /storage/udisk/1200 Mics/[2002] 1200 Micrograms/1200 Mics - 03 - Mescaline.mp3

replace(str,'/','') - 从str删除/ chars所以我们将拥有 replace(str, '/', '')

接下来我们使用rtrim它将从右到左删除所有匹配的字符,直到它找到/char,这样我们找到了我们的父目录:storageudisk1200 Mics[2002] 1200 Micrograms1200 Mics - 06 - Ecstasy.mp3

现在我们从文件路径中删除父路径名,我们有文件名 noslashes

  • 我希望添加的解释对您有所帮助 (3认同)
  • 这是一个非常聪明的答案! (2认同)
  • @ungalcrys 太棒了!如果将“/”更改为“\”,则可以将 Windows FullFileName 拆分为仅 FileName。如果去掉第一个 `replace(str,` 和结尾的 `, '')`,您将得到不带文件名的路径。 (2认同)