Я предполагаю, что вы хотите, _05 и _01 - вопрос не ясен.
DECLARE @var VARCHAR(250)
DECLARE @table TABLE (val VARCHAR(250))
INSERT INTO @table
SELECT 'IPDocument/XR/test_20120409_clearGAC_01.txt'
UNION ALL
SELECT 'IPDocument/XR/test_20120409_clearGAC_05.txt'
UNION ALL
SELECT 'IPDocument/XR/test_20120409_clearGAC.txt'
SELECT SUBSTRING(val, CHARINDEX('clearGAC', val), 50),
SUBSTRING(SUBSTRING(val, CHARINDEX('_', val)+1, 50), CHARINDEX('_', SUBSTRING(val, CHARINDEX('_', val)+1, 50))+1, 50)
FROM @table
возвращает это:
clearGAC_01.txt
clearGAC_05.txt
clearGAC.txt
Третий параметр в CHARDINDEX может быть больше, чем длина.
EDIT: Я добавил логику, если вы не знаете, если clearGAC
это имя
После прочтения комментарий, вы можете просто хотите:
Я собираюсь пройти ClearGAC. txt и посмотреть, находится ли он в БД. этот ClearGAC.txt может быть назван как вышеприведенные коды.
DECLARE @var VARCHAR(250)
DECLARE @table TABLE (val VARCHAR(250))
INSERT INTO @table
SELECT 'IPDocument/XR/test_20120409_clearGAC_01.txt'
UNION ALL
SELECT 'IPDocument/XR/test_20120409_clearGAC_05.txt'
UNION ALL
SELECT 'IPDocument/XR/test_20120409_clearGAC.txt'
SELECT *
FROM @table
WHERE val LIKE '%clearGAC%.txt'
Что вы ожидаете от результата для каждой записи? –
Какой двигатель DB? –
@TimSchmelter -> Что вы имеете в виду? – kevin