データベースに cust_nm 列があります。列 cust_nm は姓でフォーマットされ、名はカンマで区切られ、中間のイニシャルよりもスペースが続きます。
トゥンゲスヴィク、マーク・M
この形式を出力するために Oracle クエリを実行したいと考えています。
すべての名前が本当にその正確な形式である場合、次のようなことができます
SQL> ed
Wrote file afiedt.buf
1 with x as (
2 select 'TUNGESVIK, MARK M' cust_nm from dual
3 )
4 select substr( cust_nm, 1, instr(cust_nm, ', ')-1 ) last_name,
5 substr( cust_nm, instr(cust_nm, ', ')+2, instr(cust_nm, ' ', -1) - instr(cust_nm, ', ')-2) first_name,
6 substr( cust_nm, instr(cust_nm, ' ', -1)+1, length(cust_nm) ) middle_initial
7* from x
SQL> /
LAST_NAME FIRS M
--------- ---- -
TUNGESVIK MARK M
ミドル ネームのイニシャルを持たない (またはミドル ネームのイニシャルが複数ある) 人、姓または名に複数のスペースがある人を含め始めると、少なくとも一部の名前がこの形式ではなく他の形式である確率、物事はより困難になります。入力された名前データを取得し、解析し、スクラブし、標準化することだけを目的とするソフトウェア製品があります。すべてのコーナー ケースを処理しようとする独自のコードを作成すると、予想よりもはるかに時間がかかる可能性があります。