0

私は次の表を持っています:

InventorLast    InventorFirst
Bram            Ernst Arne Johan
Gesing          Ernst Rudolf F.
Beranek         Ernst W.
Koch            Ernst-Christian
Bozak           Erol
Kurtas          Erozan Mehmet
Calder          Errol Jay
Binder          Erwin
Goetschi        Erwin

Ernst-Christianの例に見られるように、最初のスペースまたは-のいずれかでミドルネーム/イニシャルを区切りたいと思います。

テーブルを作成した後、またはソースデータから挿入したときに、これを行う方が簡単でしょうか?

既存の挿入シーケンスは次のとおりです。

insert into Inventor (PatentNo, InventorFirst, InventorLast, City, statename, country, NationalityCountry, ResidenceCountry)
select PatentNo, InventorFirstname, InventorLastname, City, statename, country, NationalityCountry, ResidenceCountry
from InventorUpdate
where InventorFirstName is not null 
and InventorLastName is not null

InventorMiddle列を追加する必要があることは承知しています。コーディングについて助けが必要です。

ありがとう!

4

1 に答える 1

1

かなり醜いですが...

「スペースなし、名前なし」があるときにどうしたらよいかを言わなかったと思います

select substring(InventorFirst, 0, (case when  
                 patindex('%[ -]%', InventorFirst) = 0
                 then len(InventorFirst) + 1
                 else patindex('%[ -]%', InventorFirst)
                 end)
                 ) as middleValue,
       case 
         when patindex('%[ -]%', InventorFirst) = 0
          then '' 
          else substring(InventorFirst, 
                         patindex('%[ -]%', InventorFirst)+1, 
                         len(InventorFirst))
       end as endValue 
                 from inventor

http://sqlfiddle.com/#!3/57fa7/20

于 2012-07-20T15:24:57.960 に答える