Очень простой ответ на конкретные данные в этом вопросе: вы можете передать третий параметр в вызов функции CHARINDEX
, который ищет CHAR(10)
после определенного начального индекса. В качестве третьего параметра вы можете передать индекс найденного вами 'my specific string'
:
SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('my specific string', col))) + 1, LEN(col) - LEN(LEFT(col,
CHARINDEX ('my specific string', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX (char(10), col, CHARINDEX ('my specific string', col)))) - 1);
Однако я не уверен, что это решит вашу последнюю проблему. Возможно, ваш col
не может содержать CHAR(10)
после 'my specific string'
... Или он также может содержать несколько 'my specific string'
с. Если вам нужна вся логика, которая обрабатывает ваши (более сложные) требования в одном операторе SELECT, все может очень быстро запутаться.