名前をコンポーネントに分割するハッキーな方法は次のとおりです(SQL-Server方言)。
create table InputNames (InputName nvarchar(50));
insert into InputNames (InputName) values ('Smith, John');
insert into InputNames (InputName) values ('Mary Smith');
insert into InputNames (InputName) values ('Mark Jones');
insert into InputNames (InputName) values ('White, Barry');
insert into InputNames (InputName) values ('Damien Drybread, Esquire');
select
InputName,
case when charindex(',', inputname, 1) = 0 then
substring (inputname, 1, charindex (' ', inputname, 1) - 1)
else
substring (inputname, charindex (',', inputname, 1) + 2, 99)
end
as firstname,
case when charindex(',', inputname, 1) = 0 then
substring (inputname, charindex (' ', inputname, 1) + 1, 99)
else
substring (inputname, 1, charindex (',', inputname, 1) - 1)
end
as lastname
from inputnames
これが出力です
InputName firstname lastname
Smith, John John Smith
Mary Smith Mary Smith
Mark Jones Mark Jones
White, Barry Barry White
Damien Drybread, Esquire Esquire Damien Drybread
...そして、名前にファーストネームとラストネームの間の区切り文字ではないコンマを含めることができる場合に対応する必要があるコーナーケースがあることがわかります。
同様のアプローチがMSAccessでも機能しますが、caseステートメントの代わりに「Iif」を使用し、charindexの代わりに「InStr」を使用する必要があります。