如何在PostgreSQL中从文件名获取文件扩展名

如何在PostgreSQL中从文件名获取文件扩展名,sql,string,postgresql,substring,Sql,String,Postgresql,Substring,如何在PostgreSQL 10中从文件名获取文件扩展名 filename.zip filename.tar.gz filename.rar filename.tar.bz2 这里是这样的 filename_202011120001.zip filename_202011120002.tar.gz filename_202011120003.rar filename_202011120004.tar.bz2 您可以使用regexp\u replace()。但不清楚你想要什么。如果要删除第一个

如何在PostgreSQL 10中从文件名获取文件扩展名

filename.zip
filename.tar.gz
filename.rar
filename.tar.bz2
这里是这样的

filename_202011120001.zip
filename_202011120002.tar.gz
filename_202011120003.rar
filename_202011120004.tar.bz2

您可以使用
regexp\u replace()
。但不清楚你想要什么。如果要删除第一个句点之前(含第一个句点)的所有字符:

regexp_replace(filename, '^[^.]*[.]', '')
如果要返回最后一个后缀:

regexp_replace(filename, '^.*[.]([^.]+)$', '\1')

是一个dbfiddle。

您可以使用
regexp\u replace()。但不清楚你想要什么。如果要删除第一个句点之前(含第一个句点)的所有字符:

regexp_replace(filename, '^[^.]*[.]', '')
如果要返回最后一个后缀:

regexp_replace(filename, '^.*[.]([^.]+)$', '\1')

是一个dbfiddle。

您可以使用
子字符串()

这将捕获从第一个点到字符串末尾的所有内容

select filename, substring(filename from '\..*') ext
from (values 
    ('filename.zip'), 
    ('filename.tar.gz'), 
    ('filename.rar'), 
    ('filename.tar.bz2')
) t(filename)
文件名| ext :--------------- | :------- filename.zip |.zip filename.tar.gz |.tar.gz filename.rar |.rar filename.tar.bz2 |.tar.bz2
您可以使用
子字符串()

这将捕获从第一个点到字符串末尾的所有内容

select filename, substring(filename from '\..*') ext
from (values 
    ('filename.zip'), 
    ('filename.tar.gz'), 
    ('filename.rar'), 
    ('filename.tar.bz2')
) t(filename)
文件名| ext :--------------- | :------- filename.zip |.zip filename.tar.gz |.tar.gz filename.rar |.rar filename.tar.bz2 |.tar.bz2
您希望得到什么结果?对于
filename.tar.gz
,您想要
.gz
还是
.tar.gz
?您想要得到什么结果?对于
filename.tar.gz
,您想要
.gz
还是
.tar.gz