首页 > 解决方案 > 子字符串/从oracle中的字符串值中提取预期

问题描述

嗨,我有下面的文本并从下面的文本中获取文件名。但也需要日期提取。但我想要的不是硬编码,而是作为子字符串函数,我可以从文本本身中提取日期。

select 
SUBSTR(fname, INSTR(fname, '_', -1)+1) as fname,  
'20181217' as fdate 
from
(
   select '/home/dir/file_name_20181217_product.csv' as fname from dual
);

标签: sqloracle

解决方案


假设日期总是出现在第一个下划线之前(你的“fname”开始的地方),并且它是 8 位数字,你可以这样做:

select 
SUBSTR(fname, INSTR(fname, '_', -1)+1) as fname,  
SUBSTR(fname, INSTR(fname, '_', -1)-8,8) as fdate
from
(
   select '/home/dir/file_name_20181217_product.csv' as fname from dual
);

FNAME       fdate    
----------- --------
product.csv 20181217

推荐阅读