Türkçe Upper

Oracle'ın büyük harfe çevir (upper), küçük harfe çevir (lower), ilk harfleri büyük yap (initcap) fonksiyonları bildiğiniz ya da deneyip görebileceğiniz gibi İngilizce kurallarına göre çalışmaktadır. Örneğin elinizde "ismail" ismi, "bilir" soyadı olsun. Bu değerleri ismi initcap, soyadı ise upper ile çevirirseniz aşağıdaki sonuçla karşılaşırsınız:



select initcap('ismail') || ' ' || upper('bilir') "Ad Soyad"from dual;

Ad Soyad  
------------
Ismail BILIR
1 row selected.


Elde ettiğimiz çıktı "Ismail BILIR" oldu. Bizim istediğimiz çıktı ise "İsmail BİLİR" olacaktı. Bu durumda oracle'ın nls_ ile başlayan functionları devreye giriyor:



select nls_lower('İSİM: ', 'NLS_SORT = XTURKISH') || nls_initcap('ismail', 'NLS_SORT = XTURKISH') || ' ' || nls_upper('bilir', 'NLS_SORT = XTURKISH') "Ad Soyad"from dual;

Ad Soyad        
------------------
isim: İsmail BİLİR
1 row selected.

Göreceğiniz gibi istediğimiz şekilde türkçe dil kurallarına uygun olarak dönüşüm işlemlerimizi gerçekleştirebildik. nls_sort parametresi için kullanabileceğiniz değerleri aşağıdaki tablonun extended name kısmında karşılık gelen değerlerden görebilirsiniz:


Basic Name  Extended Name  Special Cases 
CATALAN   XCATALAN   æ, AE, ß  
CROATIAN   XCROATIAN   D, L, N, d, l, n, ß  
CZECH   XCZECH   ch, CH, Ch, ß  
DANISH   XDANISH   A, ß, Å , å  
DUTCH   XDUTCH   ij, IJ  
FRENCH   XFRENCH    
GERMAN   XGERMAN   ß  
GERMAN_DIN   XGERMAN_DIN   ß, ä, ö, ü, Ä, Ö, Ü  
HUNGARIAN   XHUNGARIAN   cs, gy, ny, sz, ty, zs, ß, CS, Cs, GY, Gy, NY, Ny, SZ, Sz, TY, Ty, ZS, Zs  
PUNCTUATION   XPUNCTUATION    
SLOVAK   XSLOVAK   dz, DZ, Dz, ß (caron)  
SLOVENIAN   XSLOVENIAN   ß  
SPANISH   XSPANISH   ch, ll, CH, Ch, LL, Ll  
SWISS   XSWISS   ß  
TURKISH   XTURKISH   æ, AE, ß  
WEST_EUROPEAN   XWEST_EUROPEAN   ß  


Kaynak: http://www.csee.umbc.edu/portal/help/oracle8/server.815/a67789/appa.htm#958510

Yorumlar

Ziya dedi ki…
teşekkürler
Deniz Akın dedi ki…
ufff akşamın 10 buçuğunda bir kap profiterol gibi oldu
Unknown dedi ki…
Merhaba Enes Bey,
select initcap('AMBARLI-TRIESTE') from dual
buradan Ambarlı-Trieste nasıl alabiliriz:)
Enes KÖROĞLU dedi ki…
Metninizin bir kısmının Türkçe kurallarına göre, bir kısmının İngilizce kurallarına göre işlem yapmak istiyorsunuz. Bu bilgilerin birleştirilmemiş hallerine sahipseniz (ya da parse ederek sahip olabilirsiniz belki) ve ondan sonra da örnek olarak AMBARLI ve TRIESTE'nin hangisi Türkçe, hangisi Türkçe değil bilgisine sahipseniz (mesela "-" karakterinden önceki ifade Türkçe'dir, sonraki ifade değildir gibi) Türkçe olan için nls_initcap'i makaledeki gibi kullanırken, Türkçe olmayan için initcap function'ını kullabilirsiniz.
Unknown dedi ki…
Teşekkürler. Çok faydalı oldu yazınız.

Bu blogdaki popüler yayınlar

Delphi - What does Abort/Break/Exit

$REGION