Nevěřím, že SQL Server má vestavěnou funkci rozdělení, takže kromě UDF jedinou jinou odpovědí, kterou znám, je unést funkci PARSENAME:
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)
PARSENAME vezme řetězec a rozdělí ho na znak tečky. Jako druhý argument bere číslo a toto číslo určuje, který segment řetězce má být vrácen (pracuje odzadu dopředu).
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3) --return Hello
Zjevný problém je, když řetězec již obsahuje tečku. Stále si myslím, že použití UDF je nejlepší způsob ... nějaké další návrhy?