2016-02-23 3 views
1

У меня есть столбец, который имеет имя файла, и мне нужно, чтобы извлечь часть файлаУдалить слова до и после 4-го появления шаблона

Пример:

filename 

abc_sfrs1_sdfre_fdsj_2015419_154825.jpeg 
asdac_cfwes_ssaare_fdsj_2015418_52584.jpeg 
ezxc_afrs_hdeas_fdsj_2015416_15484.jpeg 
rer_bfee_rre_fdsj_2015415_25485.jpeg 

Таким образом, набор результатов должен быть

2015419 
2015418 
2015416 
2015415 

дата появления всегда будет происходить после 4 _. Любые указатели приветствуются.

+0

Это для 'Sql Server' или' Mysql' –

+0

мне нужно для 'SQL Server', но с тем, чтобы увеличить объем I включены как SQL и Mysql – Zack

+0

@ Zack вы не должны использовать теги, не относящиеся к вашему вопросу. Да, вы получите более широкую аудиторию, но способ получить эти результаты не будет одинаковым. –

ответ

1

Вот один из способов использования Cross Apply и Charindex строковую функцию

Demo

;WITH cte 
    AS (SELECT * 
     FROM (VALUES ('abc_sfrs1_sdfre_fdsj_2015419_154825.jpeg'), 
         ('asdac_cfwes_ssaare_fdsj_2015418_52584.jpeg'), 
         ('ezxc_afrs_hdeas_fdsj_2015416_15484.jpeg'), 
         ('rer_bfee_rre_fdsj_2015415_25485.jpeg')) tc (string)) 
SELECT EXTRACTED_DATA = Substring(string, fur + 1, fiv - fur - 1) 
FROM cte 
     CROSS apply (VALUES (Charindex('_', string))) cs (fst) 
     CROSS apply (VALUES (Charindex('_', string, fst + 1))) cs1 (scd) 
     CROSS apply (VALUES (Charindex('_', string, scd + 1))) cs2 (thd) 
     CROSS apply (VALUES (Charindex('_', string, thd + 1))) cs4 (fur) 
     CROSS apply (VALUES (Charindex('_', string, fur + 1))) cs5 (fiv) 

Результат

EXTRACTED_DATA 
-------------- 
2015419 
2015418 
2015416 
2015415 

Update

Для вашего стола должно быть что-то вроде этого

SELECT Substring(filename, fur + 1, fiv - fur - 1) AS EXTRACTED_DATA 
FROM Yourtable 
     CROSS apply (VALUES (Charindex('_', filename))) cs (fst) 
     CROSS apply (VALUES (Charindex('_', filename, fst + 1))) cs1 (scd) 
     CROSS apply (VALUES (Charindex('_', filename, scd + 1))) cs2 (thd) 
     CROSS apply (VALUES (Charindex('_', filename, thd + 1))) cs4 (fur) 
     CROSS apply (VALUES (Charindex('_', filename, fur + 1))) cs5 (fiv) 
+0

Большое спасибо MotoGP, можете ли вы сообщить мне процесс извлечения, используя имя прямого столбца? то есть имя файла имя столбца, а также сохранить в качестве нового столбца, то есть дата должна быть новой колонкой. – Zack

Смежные вопросы