Oracle PL/SQL içinde genel programlama dillerinde yer olan ve PL/SQL'e has bir çok özellik fonksiyonlar altında bir araya toplanmıştır. Bu fonksiyonlardan biri de ikili sayı sistemindeki bir sayıyı(bit dizisini) onluk sayıya dönüştüren fonksiyon olan BIN_TO_NUM fonksiyonudur.
BIN_TO_NUM fonksiyonu parametre olarak bir ve sıfırlardan oluşan bir diziyi alır ve sonuç olarak bir sayı döndürür. Fonksiyonun genel kullanımı aşağıdaki gibidir.
BIN_TO_NUM( expr1, expr2, ... expr_n)
Fonksiyon içindeki expr1, expr2, ... expr_n 1 ve 0'dan oluşan sayı dizisini ifade eder ve virgülle ayrılır.
Fonksiyonun genel tanıtımından sonra örneklere geçebiliriz.
SELECT
BIN_TO_NUM(1,1,1,1)
FROM DUAL;
Sonuç:15
SELECT
BIN_TO_NUM(1,0,1,0,1,1,1,0)
FROM DUAL;
Sonuç: 174
Parametre olarak girilen değer içinde 1 ve 0 dışında sayı girilirse
SELECT
BIN_TO_NUM(1,0,1,1,1,0,1,3)
FROM DUAL;
Sonuç olarak aşağıdaki hata ile karşılaşırız:
ORA-01428: bağımsız değişken '3' aralık dışı
01428. 00000 - "argument '%s' is out of range"
Fonksiyonunun sınırlarını test etmek için aşağıdaki sorguyu çalıştırdığda
SELECT
BIN_TO_NUM(1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0)
FROM DUAL;
Sonuç olarak aşağıdaki hata ile karşılaşırız:
ORA-01426: sayısal taşma
01426. 00000 - "numeric overflow"
Yaklaşık olarak 10 senedir Oracle sorguları yazmama rağmen açıkçası hiç bu fonksiyona ihtiyacım olduğunu hatırlamıyorum. Ama Oracle içinde yer alan bir dönüştürme fonksiyonu olduğu için bu makalede örneklere konuyu anlatma çalıştım.
BIN_TO_NUM fonksiyonu aşağıdaki Oracle sürümlerinde yer almaktadır.
-Oracle 12c,
-Oracle 11g,
-Oracle 10g,
-Oracle 9i
Son olarak konuyu özetleyecek olursak, Oracle BIN_TO_NUM fonksiyonu parametre olarak girilen 1 ve 0'lardan oluşan sayı dizisini ondalık sayı sistemindeki karşılığını sonuç olarak döndüren dönüştürme fonksiyonudur.
Oracle PL/SQL içinde yer alan tüm dönüştürme fonksiyonlarının listesine buradan erişebilirsiniz.
Oracle PL/SQL bünyesinde yer alan tüm fonksiyonlara ve açıklamalarına ise buradan erişebilirsiniz..
Yorumlar
Yorum Gönder