Tôi không tin rằng SQL Server có chức năng phân tách tích hợp, vì vậy ngoài UDF, câu trả lời khác duy nhất mà tôi biết là chiếm quyền điều khiển chức năng PARSENAME:
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)
PARSENAME nhận một chuỗi và chia nó trên ký tự dấu chấm. Nó nhận một số làm đối số thứ hai và số đó chỉ định phân đoạn nào của chuỗi sẽ trả về (hoạt động từ sau ra trước).
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3) --return Hello
Vấn đề rõ ràng là khi chuỗi đã chứa một dấu chấm. Tôi vẫn nghĩ sử dụng UDF là cách tốt nhất ... có đề xuất nào khác không?