Я не могу читать по-тайски (я не такой умный), но, возможно, это может помочь.
Здесь мы используем CROSS APPLY, чтобы «исправить» строку, и тогда это небольшое дело PasrName()
и Concat()
Я должен добавить, что разбор имен - это скользкий путь. Нужно учитывать
- Фамилии, состоящие из нескольких слов, т.е. Де ла Круз
- Суффикс т.е. Ричард Р Каппеллетти MD
Пример
Declare @YourTable table (FullName nvarchar(100))
Insert Into @YourTable values
('John Smith')
,('John J. Smith')
,(N'กล้วยไม้ สวามิวัศดุ์')
Select A.*
,LastName = replace(parsename(S,1),'|','.')
,FirstName = replace(concat(parsename(S,4),' '+parsename(S,3),' '+parsename(S,2)),'|','.')
From @YourTable A
Cross Apply ( values (replace(replace(FullName,'.','|'),' ','.'))) B(S)
Returns
FullName LastName FirstName
John Smith Smith John
John J. Smith Smith John J.
กล้วยไม้ สวามิวัศดุ์ สวามิวัศดุ์ กล้วยไม้
РЕДАКТИРОВАТЬ 2008 Версия
Select A.*
,LastName = replace(parsename(S,1),'|','.')
,FirstName = replace( IsNull(parsename(S,4),'') + IsNull(' '+parsename(S,3),'') + IsNull(' '+parsename(S,2),''),'|','.')
From @YourTable A
Cross Apply ( values (replace(replace(FullName,'.','|'),' ','.'))) B(S)