在最后一次出现某个字符后,如何获取字符串的一部分?

时间:2020-05-29 14:00:57

标签: sql string postgresql split substring

我想在最后出现一个certin字符之后获得子字符串。 现在,我找到了here的第一部分,第二部分,但是我只需要最后一部分。 输入数据是文件目录列表:

c:\dir\subdir\subdir\file.txt
c:\dir\subdir\subdir\file2.dat
c:\dir\subdir\file3.png
c:\dir\subdir\subdir\subdir\file4.txt

不幸的是,这是我必须处理的数据,否则我可以使用命令提示符将其列出。 问题在于目录的数量总是在变化。 我基于上一个链接的代码是:

select (regexp_split_to_array(BTRIM(path),'\\'))[1] from myschema.mytable

到目前为止,我已经尝试过一些想到的方法。例如[end],[-1]等。 他们都不在工作。有没有一种方法可以得到最后的部分而又不向后重新排列我的弦,而是得到第一部分,然后再将其转回去?

1 个答案:

答案 0 :(得分:3)

您可以使用regexp_matches()

select (regexp_matches(path, '[^\\]+$'))[1]

Here是db <>小提琴。

相关问题