Berikut ini adalah contoh untuk menghitung jumlah kata dalam kalimat: select nama, LENGTH(nama) - LENGTH(REPLACE(nama,' ')) +1 jumlah_kata from t0;
NAMA JUMLAH_KATA -------------------------------------------------- ----------- Indra Armansyah 2 Nunung Hastina Hutami 3 Muhammad Akbar Asefi Putra Armansyah 5 Semoga membantu. Salam, Indra Armansyah [EMAIL PROTECTED] ----- Original Message ----- From: wawan mulyawan To: [email protected] Sent: Thursday, February 22, 2007 3:55 PM Subject: RE: [indo-oracle] memisahkan isi tabel 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] ------------------------------------------------------------------------------ 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]

