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

How to get file extension from filename in PostgreSQL

如何在 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_replace() 。 . .但不清楚你想要什么。如果要删除第一个句点之前的所有字符:

regexp_replace(filename, '^[^.]*[.]', '')

如果要return最后一个后缀:

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

Here 是一个 db<>fiddle.

您可以使用 substring():

substring(filename from '\..*')

这会捕获从第一个点到字符串结尾的所有内容。

Demo on DB Fiddle:

select filename, substring(filename from '\..*') ext
from (values 
    ('filename.zip'), 
    ('filename.tar.gz'), 
    ('filename.rar'), 
    ('filename.tar.bz2')
) t(filename)
filename         | ext     
:--------------- | :-------
filename.zip     | .zip    
filename.tar.gz  | .tar.gz 
filename.rar     | .rar    
filename.tar.bz2 | .tar.bz2