A modern approach using STRING_SPLIT, requires SQL Server 2016 and above.
DECLARE @string varchar(100) = 'Hello John Smith'
SELECT
ROW_NUMBER() OVER (ORDER BY value) AS RowNr,
value
FROM string_split(@string, ' ')
Result:
RowNr value
1 Hello
2 John
3 Smith
Now it is possible to get th nth element from the row number.