В дополнение к ответу The Impaler, здесь есть ответ, как вы можете разделить свое FullName.Это не решит очень хорошо объясненные проблемы с правилами именования, но - по крайней мере - вы получите каждую деталь в структурированном формате:
DECLARE @mockup TABLE(ID INT IDENTITY, FullName NVARCHAR(500));
INSERT INTO @mockup VALUES(N'Smith, John D')
,(N'Parker, Dr. James');
SELECT CAST(N'<x><y>'
+ REPLACE(
REPLACE(
(SELECT FullName AS [*] FOR XML PATH(''))
,N','
,N'</y></x><x><y>'
)
,N' '
,N'</y><y>')
+ N'</y></x>' AS XML)
.query(
N'
for $x in /x
return
<x>
{
for $y in $x/y[text()]
return $y
}
</x>
'
)
FROM @mockup;
Результат для имени
<x>
<y>Smith</y>
</x>
<x>
<y>John</y>
<y>D</y>
</x>
А для второго
<x>
<y>Parker</y>
</x>
<x>
<y>Dr.</y>
<y>James</y>
</x>
Вы видите, что разделенные запятыми части находятся в пределах <x>
, а пустые разделенные части - как вложенные <y>
.