Это довольно уродливо, но это работает ( Fiddle ):
SELECT
SUBSTRING(
value,
CHARINDEX(';', value, CHARINDEX(';', value) + 1) + 1,
CHARINDEX(';', value, CHARINDEX(';', value, CHARINDEX(';', value) + 1) + 1)
- CHARINDEX(';', value, CHARINDEX(';', value) + 1) - 1
)
from data;
В основном находим индекс второй точки с запятой и сколько символов дальше от третьей точки с запятой, и получение подстроки этого.