Wuih.. canggih juga nih pak indra.
Mungkin dengan seperti itu bisa dibuatkan function yang mendeteksi
berapa bagian suku kata yang mengandung didalamnya 
dan ketika terdapat lebih dari 3 suku maka biasanya awal dan akhir
menjadi first name dan last name. dan yang lainnya menjadi middle name
betul begitu pak imam. ?
 
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED]
On Behalf Of Indra Armansyah
Sent: Thursday, February 22, 2007 3:21 PM
To: [email protected]
Subject: Re: [indo-oracle] memisahkan isi tabel
 

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] <mailto:indra%40hastinapura.com> com

----- Original Message ----- 
From: Imam Nursianto 
To: indo-oracle@ <mailto:indo-oracle%40yahoogroups.com> yahoogroups.com 
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]
 


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

Kirim email ke