Во-первых, вы должны знать, что 2008 и 2008r2 больше не поддерживаются . Срок их расширенной поддержки закончился в прошлом году - 9 июля 2019 года.
Вы должны серьезно рассмотреть вопрос об обновлении версии SQL Server (обратите внимание, что 2012 год также выходит из расширенной поддержки через пару лет - 12 июля 2022 года.)
При этом, вот решение, которое будет работать на 2008r2, а также на всех поддерживаемых в настоящее время версиях - с использованием комбинации case
, charindex
, right
и reverse
:
WITH SourceTable AS
(
SELECT 'XXX-T09-CFO Signature' AS Col1
UNION
SELECT 'YYY-T140 - Update Funding Authorization Status to Completed'
UNION
SELECT'ZZZ-T13-PAB Chair Signature'
), CTE AS
(
SELECT Col1,
SUBSTRING(Col1, 0, CHARINDEX('Signature', Col1)) As BeforeSignature
FROM SourceTable
)
SELECT Col1,
CASE WHEN BeforeSignature = '' THEN
NULL
ELSE
RIGHT(BeforeSignature, CHARINDEX('-', REVERSE(BeforeSignature))-1)
END As Col2
FROM CTE
Результаты:
Col1 Col2
XXX-T09-CFO Signature CFO
YYY-T140 - Update Funding Authorization Status to Completed NULL
ZZZ-T13-PAB Chair Signature PAB Chair