テーブル Val ------------------------ Augustus de Morgan George Boole Lawrence Joseph Ellison Oracle Taro Wendy Wendy Valの値を、半角空白でsplitして、 以下の形式で出力する 出力結果 Val 1番目 2番目 3番目 ----------------------- -------- ------ ------- Augustus de Morgan Augustus de Morgan George Boole George Boole null Lawrence Joseph Ellison Lawrence Joseph Ellison Oracle Taro Oracle Taro null Wendy Wendy Wendy Wendy null
col "1番目" for a20 col "2番目" for a20 col "3番目" for a20 select Val, Ltrim(RegExp_Substr(Val,'(^| )[^ ]+',1,1)) as "1番目", Ltrim(RegExp_Substr(Val,'(^| )[^ ]+',1,2)) as "2番目", Ltrim(RegExp_Substr(Val,'(^| )[^ ]+',1,3)) as "3番目" from (select 'Augustus de Morgan' as Val from dual union select 'George Boole' from dual union select 'Lawrence Joseph Ellison' from dual union select 'Oracle Taro' from dual union select 'Wendy Wendy' from dual);
肯定戻り読みが使えれば、 これでいいのですが (^|(?<= ))[^ ]+ Oracle10gの正規表現では、 肯定戻り読みが使用できないのです