Maciej Los
Я бы предложил начать здесь: STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Docs[^]
[РЕДАКТИРОВАТЬ]
Для более старой версии MS SQL Server (чем 2016) я бы сделал это следующим образом:
DECLARE @t2s AS NVARCHAR(1000) = 'Date1-Date2=Value1\Date3-Date4=Value2\Date5-Date6=Value3'
;WITH MyRows AS
(
--initial query
SELECT 1 AS RowNo, LEFT(@t2s, CHARINDEX('\',@t2s)-1) AS RowValue, RIGHT(@t2s, LEN(@t2s) - CHARINDEX('\',@t2s)) AS Remainder
WHERE CHARINDEX('\',@t2s)>0
UNION ALL
--recursive part
SELECT RowNo +1 AS RowNo, LEFT(Remainder, CHARINDEX('\',Remainder)-1) AS RowValue, RIGHT(@t2s, LEN(Remainder) - CHARINDEX('\',Remainder)) AS Remainder
FROM MyRows
WHERE CHARINDEX('\',Remainder) >0
UNION ALL
SELECT RowNo+1 AS RowNo, Remainder AS RowValue, NULL AS Remainder
FROM MyRows
WHERE CHARINDEX('\',Remainder) =0
)
SELECT RowNo,
LEFT(RowValue, CHARINDEX('-', RowValue)-1) AS Col1,
SUBSTRING(RowValue, CHARINDEX('-', RowValue)+1, LEN(RowValue) - CHARINDEX('=', RowValue)-1) AS Col2,
RIGHT(RowValue, LEN(RowValue)-CHARINDEX('=', RowValue)) AS Col3
FROM MyRows
WHERE CHARINDEX('-', RowValue)>0 AND CHARINDEX('=', RowValue)>0
Результат:
RowNo Col1 Col2 Col3
1 Date1 Date2 Value1
2 Date3 Date4 Value2
3 Date5 Date6 Value3
Maciej Los
Таким образом, вы должны предоставить дополнительную информацию о версии SQL Server. То, что это твое?