I'd suggest to start here:
STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Docs[
^]
[EDIT]
For older version of MS SQL Server (than 2016) i'd do that this way:
DECLARE @t2s AS NVARCHAR(1000) = 'Date1-Date2=Value1\Date3-Date4=Value2\Date5-Date6=Value3'
;WITH MyRows AS
(
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
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
Result:
RowNo Col1 Col2 Col3
1 Date1 Date2 Value1
2 Date3 Date4 Value2
3 Date5 Date6 Value3