Sayıyı Yazıya çeviren SQL fonksiyonu
This SQL tutorial is in Turkish and provides a SQL function to convert numbers into words in Turkish.
Sayıyı yazıya çeviren SQL fonksiyonları, SQL Server üzerinde geliştirme yapan her SQL programcısının zaman zaman ihtiyaç duyacağı fonksiyonlardır.
Verilen bir sayıyı veya sayıları, bir rakamı yazıya çeviren fonksiyon ihtiyacı sadece SQL Server üzerinde SQL geliştiricileri için değil, değişik platformlarda geliştirme yapan her programcının bir gün karşısına çıkacak bir ihtiyaçtır.
SQL Server saklı yordamınızda (stored procedure) veya ASP.NET uygulamanızda C-Sharp veya VB.NET kodunuzda kullanmak isteyeceğiniz, hatta JavaScript veya SAP uygulamanızda ABAP kodunuz içinde bile sayıyı yazıya veya metine çevirecek fonksiyonları elinizin altında bulundurmanızı tavsiye ederim.
Türkçe bir uygulama üzerinde çalışıyorsanız, Internette "number to words" benzeri aramalarla bulabileceğiniz örnek fonksiyonlar işinize yaramayacaktır. Çünkü her dilin sayıları metin yoluyla ifade etmek için kendine özgü farklı bir yapısı var. Bu yüzden "spell numbers" vb anahtar kelimelerle bulacağınız yabancı kaynaklı SQL fonksiyonlarındaki thousands, hundred, one, two gibi İngilizce kelimeleri Türkçeleri ile yerdeğiştirerek kullanmaya çalışmak hiç bir işe yaramayacaktır.
Bir sayıyı Türkçe olarak yazıya çevirmek için genelde Türk geliştiriciler tarafından oluşturulmuş fonksiyonları kullanmak gerekecektir. Ben de ihtiyaç duyanların kullanabilmesi için veya kendi SQL fonksiyonlarını yazmak istiyenlere yol gösterici olabilmesi umudu ile aşağıdaki udf_sayiyi_yaziya_cevirme isimli SQL fonksiyonunu yazdım.
Aşağıda kodlarını verdiğim udf_sayiyi_yaziya_cevirme isimli SQL fonksiyonunu iki parametre alıyor.
İlk parametre bigint sql veri tipinde sayının kendisi.
İkinci parametre is 0 veya 1 değerini alan sql bit veri tipinde.
İstenilen sayınn yazıya çevrilmiş halinin büyük harflerle veya küçük harflerle istendiğine dair bir parametre.
Fonksiyon içinde kullanılacak değişkenler tanımlandıktan sonra, sayının toplam kaç basamaktan oluştuğu hesaplanıyor.
Bir SQL WHILE döngüsü içinde her basamak için rakam ve basamağın değeri göz önüne alınarak SQL CASE koşul cümlecikleri içerisinde istenilen metin @yaziilesayi değişkeni kullanılarak oluşturuluyor.
SQL fonksiyonunun son bölümleri SQL concatenation sırasında oluşabilecek fazladan boşluk karakterlerini (space character) temizlemek için SQL Replace fonksiyonunu kullanmak ve SQL trim fonksiyonarı LTRIM ve RTRIM 'i kullanmaktan ibaret.
Yukarıda kaynak kodunu paylaştığım udf_sayiyi_yaziya_cevirme sql fonksiyonu veya sayıları yazıya çeviren sql fonksiyonunu ihtiyacınıza göre bir saklı yordam (stored procedure) içinde de kullanabilirsiniz.
Sayıların metin yazılışlarını udf_sayiyi_yaziya_cevirme fonksiyonu ile SQL kodlarınızda aşağıdaki örnekte görüldüğü gibi elde edebilirsiniz. Dilerseniz fonksiyonun döndürdüğü nvarchar() tipindeki yazıyı bir string değişkene atarak daha sonra kullanabilirsiniz.
Eğer Internet üzerinde araştırma yaparsanız daha pek çok örnek SQL kodu bulacağınızdan emin olabilirsiniz.
Doğru bir sayı-yazı çevrimi için dikkat etmeniz gereken özellikle binli sayılar. "Bir bin" şeklinde bir çevrim olmamalı.
Ayrıca bir milyon yüz gibi bir sayıda hiç binler basamağı kullanılmamış. Sayıları metine dönüştüren fonksiyon, bir şekilde "bin" biçiminde bir yazı parçası döndürüyor olabilir dikkat etmek gerekir.
Kendi çevrim fonksiyonunuzu yazmak isterseniz bu hususlara da dikkat ediniz.
SQL Server üzerinde geliştirme yapan SQL programcıları için sayıyı yazıya dönüştüren fonksiyon ve kullanım örnekleri
Son bir not, Internet üzerinde farklı diller için farklı kaynaklardaki çevrimleri de aramak istiyorsanız aşağıdaki anahtar kelimeleri kullanabilirsiniz:
spell numbers, number spelling, number to words, number to text, number into words, gibi