Navbatdagi maqolam, so‘rov tuzishda juda ko‘p ishlatiladigan va juda kerakli bo‘lgan ba’zi funksiyalarga bag‘ishlanadi. Bu funksiyalar so‘rov kodlarida tez-tez ishlatilib turiladi va shu bilan birga o‘rganish ham qiyin emas. Bu kichik funksiyalarni o‘rganishda yana o‘sha biz bilgan “test” jadvali yordam beradi.

3_1

Demak boshladik, dastlabki funksiyamiz “LOWER” deb ataladi. Yozuv ko‘rinishidagi ustunlarni, biror qiymat bilan solishtirishda, yozuvning katta  yoki kichik harfda ekanligini bilish muhim, aks holda kerakli natijaga erishish qiyinchilik tug‘diradi(sababi, katta kichik yozuvlar qo‘shtirnoq ichida farqlidir). Bu funksiya, solishtirilayotgan yozuvni barcha harflarini kichik harflarga o‘tkazib beradi va siz bemalol kichik harflar bilan solishtirishingiz mumkin bo‘ladi. Misol, familiyasi ‘BECKHAM’ bo‘lgan inson haqida ma’lumot chiqaramiz(biz, bazada bu familiya katta yoki kichik harfda yozilganini bilmaymiz va familiya ustunidagi barcha familiyalarni kichik harfga o‘tkazib tekshiramiz ya’ni Beckham => beckham, Aimar => aimar, Luiz => luiz ko‘rinishiga o‘tkazilib, so‘ng solishtiriladi):

select * from test where lower(familiya)=’beckham’;

5_21

Kichik harfga faqat solishtirilayotganda o‘tadi, shu bilan birga bazadagi asl ma’lumotlar o‘zgarmaydi. Bu funksiyaga teskari funksiya “Upper”dir. Barcha familiyalarni katta harfga o‘tkazib solishtiradi(Beckham => BECKHAM, Aimar => AIMAR, Luiz => LUIZ,… ko‘rinishiga o‘tkazilib solishtiriladi).

select * from test where upper(familiya)=’BECKHAM’;

5_21

Shu tipga oid ya’na bir funksiya “initcap” dir. Bu faqat yozuvning birinchi harflarini kattaga o‘tkazib, keyin solishtiradi. Qolgan harflar kichkina ko‘rinishda bo‘ladi(beckham => Beckham, luiz => Luiz, aimar => Aimar,…).

select ism, familiya, yosh from test where initcap(ism) = ‘David’;

5_41

Keyingi kichik funksiyamiz yozuvlarni kerakli shaklda kesib beradi. Bu bizga “like” operatorini eslatadi. Lekin bu funksiyani ishlatish osonroq hisoblanadi. Bu funksiya “substr” deb nomlanadi va bir necha parametrlarni qabul qiladi. Dastlabki parametr ustun nomi, keyingisi qaysi simvoldan boshlab kesish kerakligi va oxirgisi nechta simvol kesib olish kerakligidir. Misol ko‘ramiz,ism ustunidagi yozuvlarning 2 simvolidan 3 ta simvol kesib olganda “arl” hosil bo‘ladigan ismlarning yoshini ham chiqarish kerak bo‘lsin:

select ism, yosh from test where substr(ism, 2, 3)='arl';

5_51

Carlos” so‘zini 2 simvolidan 3 ta simvol kesganda “arl” hosil bo‘ladi. Bu funksiya juda keng foydalaniladi.

Keyingi funksiya “length” deb nomlanadi va yozuvdagi barcha simollarning sonini aniqlab berad, bo‘sh joy ham bitta simvol shaklida hisoblanadi. Misol, jadvaldagi ismi 5 ta simvoldan iborat bo‘lgan insonlarning ismi, familiyasi va maoshi chiqarilsin.

select ism, familiya, maosh from test where length(ism)=5

5_61

Keyingi funksiya juda qiziqarlidir. Bazadagi simvollarni funksiyada berilgan simvollarga almashtirilib ekranga chiqariladi yoki biror yozuv bilan solishtirilishi mumkin. Bunda kerakli ustun beriladi va mos holda kerakli simvolga almashtiriladi. Office programmalaridagi “заменить” buyrug‘i vazifasini bajaradi. “Replace” kalit so‘zi bilan boshlanib, undan keyin ustun nomi va qaysi simvolni o‘zgartirish kerakligi va qaysi simvolga o‘zgartirish kerakligi beriladi. Misol, ismining boshlanishi “D” bo‘lgan ismlarni “Y” harfiga o‘zgartirib, barcha ismlar ekranga chiqarish so‘rovi:

select replace(ism, 'D', 'Y') from test;

5_71

Replace funksiyasida ham, faqat ekranga chiqarilayotganda ma’lumotlar o‘zgartiriladi, lekin bazadagi ma’lumotlar o‘z holida qoladi.

Keyingi funksiyamiz ma’lumotlarni bir biriga qo‘shib, ekranga yagona ma’lumot ko‘rinishida chiqarish uchun ishlatiladi. Barcha funksiyalar kabi, bazaga hech qanday o‘zgartirish kirita olmaydi, faqat foydalanuvchilarga(bizga) biriktirilgan ko‘rinishda chiqaradi. Misol, ism va familiyani birlashtirib, ekranda ko‘rish imkonini beruvchi so‘rov tuzish:

select concat(ism , familiya) from test;

5_81

Asosiy kichik funksiyalar shulardan iborat, lekin boshqa funksilar ham mavjud. Ular haqida keyingi maqolalarda yozishga harakat qilaman.