Nie wierzę, że SQL Server ma wbudowaną funkcję dzielenia, więc poza UDF, jedyną inną odpowiedzią, jaką znam, jest przejęcie funkcji PARSENAME:
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)
PARSENAME pobiera ciąg i dzieli go na znak kropki. Jako drugi argument przyjmuje liczbę, która określa, który segment łańcucha ma zostać zwrócony (działając od tyłu do przodu).
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3) --return Hello
Oczywistym problemem jest sytuacja, gdy ciąg zawiera już kropkę. Nadal uważam, że najlepszym sposobem jest użycie UDF... czy są jakieś inne sugestie?