Я хочу выбрать только дату 170522 ггммдд из этих строк.
PRD.SBR.BATCH.D170522.T011726.
имя столбца - source_file_name, мне нужна только дата из этого столбца, а не другие значения
тогда дата всегда находится после строки .D?
Какие могут быть разные форматы вашей файловой строки? Всегда ли это фиксированная длина, всегда ли дата является 4-й частью, всегда ли дата следует за .D?
да это всегда 4 часть. поэтому я просто хочу выбрать эту дату из этого столбца
выберите B.SOURCE_FILE_NAME A.* из STG0_HST_SBR_AIR_SEG A, SBR_SRC_HEADER B, ГДЕ A.SBR_ID=B.SBR_ID
вот мой запрос, но когда я выбираю source_file_name, он дает мне полный результат, но я хочу выбрать только дату.


В Oracle вы можете использовать что-то вроде ниже, это даст вам 4-ю часть строки имени вашего файла:
SELECT SUBSTR(FILE_NAME_FIELD, INSTR(FILE_NAME_FIELD, '.', 0, 3) + 1, 7) FROM YOUR_TABLE;
Внутренняя функция INSTR найдет индекс 4-го вхождения точки, а SUBSTR возьмет подстроку с этим индексом с фиксированной длиной 7 (длина части даты).
Результатом ваших выборочных данных будет:
D170522
Вы все еще можете отформатировать это как вам нравится, например, удалить D и привести его к фактической дате...
SUBSTRING_INDEX ЯВЛЯЕТСЯ НЕДЕЙСТВИТЕЛЬНЫМ ИДЕНТИФИКАТОРОМ, ОШИБКА ORACLE.
Вы ошибочно отметили вопрос как mysql, поэтому мой ответ основан на этом. Я проверю эквивалент Oracle.
Я скорректировал свой ответ для Oracle.
Если строка всегда выглядит так, а вы пометили вопрос тегом 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>
который говорит: дайте мне первое «число» из входной строки.
Строка или столбец?? одно строковое значение в столбце?