如何从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字符。
我在文件名列中有一句话如:
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字符。