Please use something like this-
;WITH CTE1 AS
(
SELECT REPLACE(REPLACE(REPLACE([Full Name],'(',''),')',''),'@','') [Full Name] FROM Names
)
,CTE AS
(
SELECT [Full Name],
CAST(('<r><n>' + REPLACE([Full Name],' ', '</n><n>') + '</n></r>') AS XML) X
FROM CTE1
)
SELECT
FNAME, CASE WHEN ALIAS1 = '' THEN ALIAS2 ELSE ALIAS1 END ALIAS1,
CASE WHEN ALIAS1 = '' THEN '' ELSE ALIAS2 END ALIAS2
FROM
(
SELECT
i.value('n[1]','VARCHAR(50)') AS FNAME,
ISNULL(i.value('n[2]','VARCHAR(50)'),'') AS ALIAS1,
ISNULL(i.value('n[3]','VARCHAR(50)'),'') AS ALIAS2
FROM CTE c
CROSS APPLY c.X.nodes('/r') x(i)
)z
OUTPUT
/*------------------------
OUTPUT
------------------------*/
FNAME ALIAS1 ALIAS2
---------------------------- --------- --------------------------------------------------
ABC PQR
ABC PQR XYZ
ABC PQR
ABC PQR
ABC PQR 123
(5 row(s) affected)