2016-06-29 8 views
1

PostgreSQL 9.3の使用。PostgreSQLのファイル名からファイル拡張子を取得するには?

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

この列もnull値を許可:そのようなファイル名の値を持つ列を持っている 。

SQLクエリでこの列からファイル拡張子を取得するにはどうすればよいですか?

+1

1行あたりのファイル名、またはカンマで区切られましたか? – jarlh

+0

行ごとに1つのファイル名 – kostepanych

答えて

3

試してみてください。

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 
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 
+0

危険です。パターンが一致しない場合、regexp_matchesは行を削除します。 –

関連する問題