Cara alternatif apabila data nama tidak semuanya mengandung 3 kata....
Dengan menggunakan fungsi berikut anda dapat menentukan posisi string ke berapa 
dalam kalimat yang akan anda ambil.

Contoh:
select getwordnum('Muhammad Akbar Asefi Putra Armansyah',2,' ') as hasil from 
dual;
HASIL
--------------------------------------------------------------------------------
Akbar

select getwordnum('Muhammad Akbar Asefi Putra Armansyah',3,' ') as hasil from 
dual;
HASIL
--------------------------------------------------------------------------------
Asefi


Berikut contoh lengkap untuk kasus anda....

create table t0 (nama varchar2(50));

create table t1 (nama_depan varchar2(20), nama_tengah varchar2(15), 
nama_belakang varchar2(15));

insert into t0 values ('Indra Armansyah');

insert into t0 values ('Nunung Hastina Hutami');

insert into t0 values ('Muhammad Akbar Asefi Putra Armansyah');

create or replace function GETWORDNUM
(cString  nvarchar2, nIndex smallint, cDelimiters nvarchar2 default nchr(32) || 
nchr(9) || nchr(10) || nchr(13) )
return nvarchar2
deterministic
as
   i                 smallint  :=  1;
   k                smallint  :=  1;
   l                 smallint  :=  0;
   j                 smallint;
   lmin             smallint;
   nEndString    smallint :=  1 + length(cString);
   LenDelimiters smallint;
   cWord         nvarchar2(4000) :=  '';
begin      
  if cString  is not null then
     if cDelimiters is not null then
       LenDelimiters := length(cDelimiters);
           <<search>> while  i  <=  nIndex loop
                   while  instr(cDelimiters, substr(cString, k, 1))  >  0  and  
nEndString  >  k loop
                      k  :=  k + 1; 
                   end loop;
               exit when k >= nEndString;
                   j  :=  1;       
                   lmin  :=  nEndString;
                   while  j  <=  LenDelimiters loop
                           l  :=  instr(cString, substr(cDelimiters, j, 1), k); 
   
                           j  :=  j + 1;
                           if l > 0 and lmin > l then      
                              lmin  :=  l;
                           end if;
                   end loop;
                   if i = nIndex then
                           cWord  :=  substr(cString, k, lmin - k);
                           exit;
                   end if;         
                   k  :=  lmin + 1;
            exit when k >= nEndString;
                   i  :=  i + 1;
           end loop search;
    else   
       if nIndex = 1 then
           cWord  := cString;
        end if;    
     end if;       
  end if;  
 return  cWord;
end GETWORDNUM;
/

select * from t0;

NAMA
--------------------------------------------------
Indra Armansyah
Nunung Hastina Hutami
Muhammad Akbar Asefi Putra Armansyah

insert into t1 select getwordnum(nama,1,' '), getwordnum(nama,2,' '), 
getwordnum(nama,3,' ') from t0;

select * from t1;

NAMA_DEPAN           NAMA_TENGAH     NAMA_BELAKANG
-------------------- --------------- ---------------
Indra                      Armansyah
Nunung                   Hastina             Hutami
Muhammad              Akbar                Asefi



Semoga membantu.

Salam,

Indra Armansyah
[EMAIL PROTECTED]


  ----- Original Message ----- 
  From: Imam Nursianto 
  To: [email protected] 
  Sent: Thursday, February 22, 2007 9:14 AM
  Subject: [indo-oracle] memisahkan isi tabel




  mohon pencerahan dunk,
  Saya punya table yang ada kolom nama, kemudian
  isi kolom nama tersebut ingin saya pecah dalam 3 column di table yang
  berbeda gimana caranya yaa....
  misalnya : 

  table :
  A               
                 
                 
                 
     B
  column :
  nama                    
  ----> nama_depan, nama_tengah, nama_belakang
  agus nur rahman
  --->
  agus               
  , 
  nur                 
  , rahman

  Terima Kasih,

  Imam Nursianto



   


------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG Free Edition.
  Version: 7.0.412 / Virus Database: 268.18.3/694 - Release Date: 2/20/2007


[Non-text portions of this message have been removed]

Kirim email ke