如何从oracle中的space中提取单词?

How to extract words from space in oracle?

我在文件名列中有一句话如:

filename
Exact filename from California Dec 2015
Exact filename from Austin Jan 2015

我只想从中提取日期部分,就像我的预期输出是:

filename
Dec 2015
Jan 2015

但是我在 Whosebug 中进行了搜索,但我找到了两个结果,但它们对我不起作用。

select regexp_substr(regexp_replace(filename
                                   ,'[[:space:]]-[[:space:]]'
                                   ,chr(11))
                    ,'([^'||chr(11)||']*)('||chr(11)||'|$)'
                    ,1 -- Start here
                    ,4 -- return 1st, 2nd, 3rd, etc. match
                    ,null
                    ,1 -- return 1st sub exp
                    )

我尝试的另一种方法是:

regexp_like(filename,'(^[:space:]|[:space:]$)');

然而这两种解决方案都不适用于 me.I 在 SO 上搜索了更多但没有得到它。

如果您只需要列值中的最后两个“单词”,您可以使用:

select regexp_substr(filename, '[^[:space:]]+[[:space:]][^[:space:]]+$') from table;

此表达式匹配:(除space之外的任何内容)(space)(除space之外的任何内容)(end)

请注意,这只允许最后两个单词之间有一个白色space字符。