Navbatdagi maqolamiz, jadval ustuni tiplarini o‘zgartirishdan iborat bo‘ladi, ya’ni яъни Oracle MBBTda,  tipni o‘zgartiruvchi, funksiyalarni ko‘rib chiqamiz. Buning uchun bizga «dual» nomli jadval kerak bo‘ladi. Bu jadval oldingi maqolalarda aytib o‘tganimdek, amallarni bajarish uchun kerak bo‘lib, o‘zida bitta dona «x» degan axborotni saqlaydi.

Asosan 3 xil tipdagi ustunlar bir-biri bilan o‘zgartiriladi: simvollar kiritish uchun mo‘ljallangan tiplar(char, varсhar2), raqamli tiplar(Number) va vaqtni(Date) kiritish uchun mo‘ljallangan tiplar. 3 xil tiplar bo‘lgandan keyin, bularni o‘zgartirish uchun 3 xil funksiyalardan foydalanamiz: to_char, to_number, to_date. Quyidagi rasmda aniq qilib ko‘rsatilgan:

1_1

Tiplarni o‘zgartirish 2 usuli mavjud:

— aniq o‘zgartirish, ya’ni aniq format berilib, shu format asosida o‘zgartiriladi;

— mavhum o‘zgartirish, ya’ni tizim o‘zi istalgan ko‘rinishda o‘zgartirib beradi.

Nazariy qism bilan tanishib oldik, eni amaliyotga ko‘rsatib o‘taman. Dastlab, vaqt ko‘rinishidagi ustunni simvol ko‘rinishiga aniq o‘zgartirish yordamida o‘zgartiramiz. Bu degani vaqt tipini o‘zimiz ko‘rsatgan format asosida simvol ko‘rinishiga o‘zgartiramiz. Format quyidagi ko‘rinishlarda bo‘lishi mumkin:

YYYY — Raqam ko‘rinishida to‘liq yil.

YEAR — ingliz tilida yilni yozmi ravishda to‘liq yozish.

MM — ikki harfdan tashkil topgan oy nomi

MONTH — to‘liq oy nomi

MON — uch hardan iborat oy nomi

DY — uch harfdan iborat hafta kuni nomi

DAY — hafta kunining to‘liq nomi

DD — hafta kunini sonda ko‘rinishi.

HH24:MI:SS AM — vaqtning to‘liq sekund, minut, soat ko‘rinishi.

DD «of» Month — o‘zingizni biror belgingizni qo‘shib chiqarish.

Shulardan foydalanib misol ko‘ramiz. Buning uchun biz «Sysdate» dan foydalanamiz, bu kalit so‘z bizga tizimning vaqtini beradi.

select to_char(sysdate, ‘DD-MON-YYYY’), to_char(sysdate, ‘DAY.MONTH.YEAR’), to_char(sysdate, ‘HH24:MI:SS AM’) from dual

1_2

Bu misolda, tizim vaqtini bir necha ko‘rinishini simvol ko‘rinishiga o‘zgartirib, ekranga chiqarilmoqda.

Keyingi o‘zgartirishimiz, kiritilayotgan ma’lumotni vaqt ko‘rinishiga o‘tkazamiz, faqat ma’lumot vaqt tipiga o‘tkazilishi mumkin bo‘lishi lozim. Uning uchun ham format beramiz, formatga qarab kun, oy va yillar ajratib olinadi.

select to_date(’03-02-2014′, ‘DD/MM/YYYY’) as First, to_date(’03-02-2014′, ‘MM/DD/YYYY’) as Second from dual

1_3

Navbat, raqam ko‘rinishidagi ustunlarni, simvol ko‘rinishiga o‘tkazishga keldi. Bu usuldan asosan hisob kitob natijalarini chiroyli ko‘rinishda chiqarishda foydalaniladi. Raqam va bu raqamni ekranga chiqarish uchun beriladigan format yoziladi. Format berishda, «9» simvolidan foydalaniladi, bu simvol natijaning har bir raqamini bildiradi. Misol ko‘ramiz:

select to_char(123, ‘999’) as one, to_char(123, ’99’) as two, to_char(123, ‘9999999’) as three from dual

1_4

Agar raqamlarni ishorasi bilan chiqarish kerak bo‘lsa va bu ishoralarning joylashishii ham rol o‘ynasa «S» kalit harfidan foydalanamiz.

select to_char(-123, ‘S999’) as one, to_char(123, ‘999S’) as two, to_char(-123, ‘999S’) as three from dual

1_5

Agar kasr sonlardan iborat raqamlarni simvol ko‘rinishiga o‘tkazib chiqarish kerak bo‘lsa, bizga «D» kalit harfi yordam beradi. Bu orqali kerakli o‘nlikdagi kasr sonlarni chiqarib olamiz. Faqat bu kalit harfni kasr sonning butun qismini kamaytirish uchun ishlatmang, bu noaniq simvollar ketma-ketligini chiqardi.

select to_char(‘123.45’, ‘999D99′) as one, to_char(123.45, ’99D999’) as two, to_char(123.17, ‘9999D9’) as three from dual

1_6

Endi, simvollar orqali raqam ustunlarini to‘ldirishni ko‘rsataman, bu asosan buxgalteriya hodimlari uchun kerak bo‘ladi. Ortiqcha nollar, dollar belgilari, keraklicha butun qismni ajratish

select to_char(‘12345’, ‘999,99.00’) as one, to_char(12345, ‘$99,999.000’) as two, to_char(12317, ‘$009,9999’) as three from dual

1_7

Oxirgi o‘zgartirishimiz, simvol ko‘rinishidagi ustunni, raqam ko‘rinishiga o‘tkazishdan iborat. Buning uchun «to_number» funksiyasidan foydalanamiz.

select to_number(‘123’) as bir, to_number(‘123’)+7 as ikki from dual

1_8

Ko‘rib turganingizdek, raqam ko‘rinishiga o‘tib, amallarni ham bajarmoqda. Agar raqam ko‘rinishiga o‘zgartirib bo‘lmaydigan ma’lumot kiritilsa, xatolik chiqadi.

select to_number(‘123abc’) from dual

1_9

YUqoridagi funksiyalar oracle MBBT uchun yaratilgan bo‘lib, qolgan MBBT lari uchun boshqa funksiyalar ishlatiladi, lekin sintaksislari o‘xshashdir.

Xulosa shuki, bulardan boshqa format berish kalit harflari mavjud bo‘lib, ular asosan katta hajmdagi proyektlar qilinganda ishlatiladi, boshlovchilar uchun shularni bilish kifoya qiladi.