我的表的列为“ ID”,“ File_Name”


 ID     File_Name
 123    ROSE1234_LLDAtIInstance_03012014_04292014_190038.zip
 456    ROSE1234_LLDAtIInstance_08012014_04292014_190038.zip


我所需要的只是获取文件名中指定的第一个日期。

需要:

 ID     Date
 123    03012014
 456    08012014

最佳答案

这是一种假设第二个_之后的8个字符始终为真的方法。

它找到第一个_的位置,然后使用第一个+1的位置寻找第二个_的位置,然后在第二个_之后寻找8个字符

SELECT Id
  , substr(File_name, instr(File_name,'_',instr(File_name,'_')+1)+1,8) as Date
FROM Table


要么
一种更优雅的方法是使用RegExp_Instr函数,从而无需嵌套instr。

SELECT Id, substr(File_name,REGEXP_INSTR(FileName,'_',1,2)+1,8) as date
FROM dual;

10-08 09:19