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

时间:2016-06-29 14:39:35

标签: sql postgresql postgresql-9.3

使用PostgreSQL 9.3。 有一个文件名值如下的列:

qwerty.swf
some.image.jpg
some.other.image.jpg 

此列还允许空值。

如何在sql查询中从此列获取文件扩展名?

2 个答案:

答案 0 :(得分:4)

尝试:

    with mytable as (
    select unnest(string_to_array($$qwerty.swf
    some.image.jpg
    some.other.image.jpg
    test
    $$,E'\n')) filename)

    select filename,substring(filename from '\.([^\.]*)$') 
    from mytable

答案 1 :(得分:2)

使用regexp执行此操作。

select regexp_matches(filename,'\.(\w+)$')
from tablename
where filename ~ '\.' --check if filename has atleast 1 . character in it

Sample fiddle

substringreversestrpos的组合。

select reverse(substring(reverse(filename) from 1 for strpos(reverse(filename),'.')-1))
from tablename
where filename ~ '\.' --check if filename has atleast 1 . character in it