Не самый элегантный, но решающий для заданных требований:
DECLARE @InputValue AS VARCHAR(200) = '100231|ABC Limited||Liquidated|514321||AU||Testwood|5165|5/14/1996 12:00:00 AM|8/1/2003 12:00:00 AM|Test1|Test2|'
SELECT
SUBSTRING(@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue,
CHARINDEX('|',@InputValue) + 1
) + 1
) + 1
) + 1
) + 1
) + 1
) + 1
) + 1
) + 1
) + 1
) + 1
)
,LEN(@InputValue))
Предполагая, что вы знаете, всегда будет 14 '|'для каждой строки вы можете использовать более сокращенную версию, такую как:
DECLARE @InputValue AS VARCHAR(200) = '100231|ABC Limited||Liquidated|514321||AU||Testwood|5165|5/14/1996 12:00:00 AM|8/1/2003 12:00:00 AM|Test1|Test2|'
SELECT
RIGHT(@InputValue,
CHARINDEX('|',REVERSE(@InputValue),
CHARINDEX('|',REVERSE(@InputValue),
CHARINDEX('|',REVERSE(@InputValue)) + 1
) + 1
)
)