Вместо того, чтобы пытаться настроить функцию синтаксического анализа строк, когда T-SQL действительно не специализируется на синтаксическом анализе текста, я бы порекомендовал использовать регулярные выражения, если вы используете SQL Server 2005 или новее. В Интернете вы можете найти множество примеров точного кода CLR для них или вы можете скачать бесплатную библиотеку SQL # (которую я написал) по адресу http://www.SQLsharp.com и сразу начать использовать их. Вот несколько примеров использования вашей конкретной ситуации:
SELECT SQL#.RegEx_CaptureGroup('hello this is a Test:12356.jpg<br> reset of line',
'Test:([^ ]+)<br>', 1, NULL, 1, -1, '')
-- 12356.jpg
SELECT SQL#.RegEx_CaptureGroup('hello this is a Test:<br> reset of line',
'Test:([^ ]+)<br>', 1, NULL, 1, -1, '')
-- NULL
SELECT SQL#.RegEx_CaptureGroup('hello this is a T:12356.jpg<br> reset of line',
'Test:([^ ]+)<br>', 1, NULL, 1, -1, '')
-- NULL
В каждом случае сопоставление с образцом начинается со слова «Test:», а затем захватывает любые непробельные символы, пока не достигнет «
» (или пробела, так как оно ищет не пробел). Если не найдено из-за того, что между «Test:» и «
» ничего нет или «Test:» не существует, возвращается NULL.