Notice how this only refers to @search once and @syncData twice and uses a minimum of functions to optimise performance.
To find the substring in a varchar.
DECLARE @search nvarchar(2000)= 'SiteCode'
DECLARE @syncData nvarchar(4000)='MyCol1="ABC" MyCol2="DEF" SiteCode="LA123"'
SET @search += '="'
SELECT SUBSTRING(x.x, 0, CHARINDEX('"', x.x))
FROM
(SELECT RIGHT(@syncData,
NULLIF(CHARINDEX(REVERSE(@search), REVERSE(@syncData)), 0) - 1) x) x
To find the substring in a table:
DECLARE @search nvarchar(2000)= 'MyCol2'
SET @search += '="'
DECLARE @t table(syncData nvarchar(4000))
INSERT @t values
('MyCol1="ABC" MyCol2="DEF" SiteCode="LA123"'),
('MyCol1="ABD" MyCol2="DEG" SiteCode="LA321"')
SELECT SUBSTRING(x.x, 0, CHARINDEX('"', x.x))
FROM @t t
CROSS APPLY
(SELECT RIGHT(syncData,
NULLIF(CHARINDEX(REVERSE(@search), REVERSE(syncData)), 0) - 1) x) x