Jag tror inte att SQL Server har en inbyggd delad funktion, så förutom en UDF är det enda andra svaret jag vet att kapa funktionen PARSENAME:
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)
PARSENAME tar en sträng och delar den på punkttecknet. Det tar ett nummer som sitt andra argument, och det numret anger vilket segment av strängen som ska returneras (arbetar bakifrån och fram).
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3) --return Hello
Uppenbart problem är när strängen redan innehåller en punkt. Jag tror fortfarande att det är det bästa sättet att använda en UDF...några andra förslag?