Sql 我只想从这些列中选择日期

Sql 我只想从这些列中选择日期,sql,oracle,Sql,Oracle,我只想从这些行中选择日期170522 yymmdd PRD.SBR.BATCH.D170522.T011726. 在Oracle中,您可以使用以下内容,这将为您提供文件名字符串的第四部分: SELECT SUBSTR(FILE_NAME_FIELD, INSTR(FILE_NAME_FIELD, '.', 0, 3) + 1, 7) FROM YOUR_TABLE; INSTR内部函数将查找点的第四个匹配项的索引,SUBSTR将以固定长度7(日期部分的长度)作为该索引的子字符串 样本数据的结

我只想从这些行中选择日期170522 yymmdd

PRD.SBR.BATCH.D170522.T011726.

在Oracle中,您可以使用以下内容,这将为您提供文件名字符串的第四部分:

SELECT SUBSTR(FILE_NAME_FIELD, INSTR(FILE_NAME_FIELD, '.', 0, 3) + 1, 7) FROM YOUR_TABLE;
INSTR内部函数将查找点的第四个匹配项的索引,SUBSTR将以固定长度7(日期部分的长度)作为该索引的子字符串

样本数据的结果将是:

D170522


您仍然可以按自己喜欢的方式格式化它,例如剥去D并将其转换为实际日期…

如果字符串总是这样,并且您使用Oracle标记问题,那么

SQL> with test (col) as
  2    (select 'PRD.SBR.BATCH.D170522.T011726.' from dual)
  3  select regexp_substr(col, '\d+') result
  4  from test;

RESULT
------
170522

SQL>

上面写着:给我输入字符串中的第一个“数字”。

行或列??列中是否有单个字符串值?列名是源文件名?我只需要此列中的日期,而不需要其他值该日期总是在
.D
字符串之后?文件字符串的不同格式是什么?它是否总是固定长度,日期是否总是第四部分,日期是否总是跟在后面。是的,它总是第四部分。所以我只想从这个列中选择这个日期Substring_索引是无效的标识符,ORACLE错误。你错误地将这个问题标记为mysql,所以我的答案基于此。我将检查是否有与Oracle相同的答案。我已调整了Oracle的答案。