Alfabetik Sıralama :ABCDEFGHIJKLMNOPQRSTUVWXYZ -


Oracle veritabanında tablolarda karakter arama işlemi yaptığımızda Türkçe karakter sorunu yaşıyoruz.  Oracle dil ayarları doğru yapılmışsa, sadece ı İ karakterlerinde bu sorun meydana gelecektir.

Bunu aşmak için basit bir fonsksiyon yazabilir ve bu fonskiyonu SQL cümlelerimizde kullanabiliriz.

Fonskiyon :

CREATE OR REPLACE FUNCTION turkce_ara(gelen in varchar2) RETURN varchar IS
   temp varchar2(1
00);
    BEGIN
       temp:=replace(gelen,
´i´,´İ´);
       temp:=replace(temp,
´ı´,´I´);
       temp:=upper(temp);
         RETURN temp;
   END
turkce_ara;

Kullanımı şu şekilde.

(KISI adında bir tablomuz var be ADI, SOYADI,TELEFONU alanlarına sahip. Adı Ali olanları arayacağız.)

Select
   ADI,
   SOYADI,
   TELEFONU
from
   KISI
where
   turkce_ara(ADI) = turkce_ara(´ali´)

Bu SQL çalıştığında, ADI sütunundaki verileri ve aradığımız kelime olan "Ali" kelimesi turkce_ara fonksiyonuna girecektir. Yazdığımız bu fonskyon parametre olarak aldığı "gelen" değişkenindeki "i" harfini "İ" ye,  "ı" harfini "I" ya dönüştürdükten sonra, bu değişkeni oracle ın upper fonksiyonuna sokarak tamamını büyük harfe çevirir. Bu sayede türkçe karakter sorunu olmadan arama yapabiliyoruz.

Oracle türkçe ayarlanmış olsa bile, upper() fonskiyonu "ı, i" karalterlerinde sorun yapmaktadır. O yüzden i ve ı harflerini düzgün şekilde büyük harfe çevirmek için bu fonksiyonu yazdık. Bu işlem, büyük tablolarda performans sorununa neden olacaktır.

(Oracle son versiyonlardada bu sorunu düzeltilmiş olabilir, denemedim.)



Konu: Arama işleminde türkçe karakter sorunu
 
Okunma Sayısı : 73
Eklenme Tarihi : 31 Ocak 2007, Çarşamba
SONRAKI BILGI : Tarihler arası veri seçtirmek.   
Forum Linki:
Aranan Kelime:
   

 

 

Copyright © 2008 Temha.neT