O’ZBEKISTON RESPUBULIKASI AXBOROT TEXNALOGIYALARI
VA KOMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
TOSHKENT AXBOROT TEXNALOGIYALARI UNIVERSITETI
SAMARQAND FILIALI KOMPYUTER INJINERINGI FAKULTETI
“MALUMOTLAR BAZASI “FANIDAN
MUSTAQIL ISH
MAVZU: Satr ostini tanlash va registr holatini alamshtirish funksiyalaridan foydalanib so'rovlar yaratish.(SUBSTRING (),UPPER(),LOWER,
KIF-104-15-guruh
Bajardi: Narziyev Fayzullo
Tekshirdi: Abduvoitov Akmal
Samarqand-2021
Satr funksiyalaridan foydalanish: SUBSTR(), TRIM(), UPPER(), LOWER()
Qisman o'yinlar uchun LIKE dan foydalanish juda kuchli bo'lishi mumkin, ammo biz ko'rganimizdek, naqshlar plyajda o'qishga to'g'ri kelmaydi. Qisman moslikni amalga oshirishning yana bir usuli qiymatlarni boshqarish uchun string funksiyalaridan foydalanishdir. String funktsiyalari odatda kalit so'zdan keyin qavslar shaklida bo'ladi. Qavslar biz funktsiyaga o'tmoqchi bo'lgan har qanday argumentlarni o'z ichiga oladi. Umumiy format quyidagicha ko'rinadi: KEYWORD (ARG1, ARG2, ARG3). Odatda birinchi argument biz manipulyatsiya qilmoqchi bo'lgan qatordir. Bu erda tez-tez ishlatiladigan qator funktsiyalari mavjud:
SUBSTR()
SUBSTR() funksiyasi biz uni qavs ichiga olgan qatorni oladi va satrning biz belgilagan qismini qaytaradi (ergo, substring).
Boshqa qator funktsiyalarida ko'rib turganimizdek, bu argument jadvaldagi ustun nomi bo'lishi mumkin va odatda shunday bo'ladi. Bu bizga ma'lum bir ustun (yoki ehtimol cheklangan kichik to'plam) uchun barcha qiymatlarni boshqarish imkoniyatini beradi.
Satrning qaysi qismini qaytarish kerakligini aniqlash uchun SUBSTR() biz maqsad qilgan maydondan tashqari bir nechta qo'shimcha argumentlarni qabul qiladi:
kerakli pastki qatorning boshlang'ich nuqtasi (chapdan belgilarni hisoblash)
ushbu boshlang'ich nuqtadan tortib olinadigan belgilar soni
Toʻliq funksiya chaqiruvi quyidagi shaklda boʻladi: SUBSTR (STRING, START_POINT, LENGTH). Uchinchi dalil ixtiyoriydir. Agar biz uni o'chirib qo'ysak, SUBSTR() barcha belgilarni berilgan boshlang'ich nuqtadan satr oxirigacha qaytaradi.
Misol ko'proq foydali bo'lishi mumkin. Shunday qilib, bu erda oldingi ZIP so'rovi, so'rovning WHERE bandidagi pastki qator mosligini ishlatish uchun qayta yozilgan:
Yuqorida biz birinchi beshta belgisi "77566" ga mos keladigan jadvaldagi barcha pochta indekslarini so'raymiz. Bu soʻrov biz avval koʻrgan natijalar toʻplamini qaytaradi: 775661497 va 77566036.
Funktsiyalar so'rovning SELECT bandida ham ishlatilishi mumkin, shuning uchun biz shunday qilishimiz mumkin:
Endi biz jadvaldagi barcha ZIP-larning besh xonali ko'rinishini olamiz (va ZIP+4-dan qo'shimcha to'rtta raqamni tashlab qo'yamiz):
TRIM()
TRIM() funktsiyasi ko'pincha satrning har ikki tomonidagi oq bo'shliqni kesish uchun ishlatiladi. Ma'lumotlarni kiritish paytida satrlar ko'pincha tasodifiy bosh yoki keyingi bo'shliq bilan kiritiladi. Ushbu holatni simulyatsiya qilish uchun keling, ma'lumotlarni yanada chalkashtirib yuboraylik:
Endi davlat maydoni "GA" ga teng bo'lgan barcha qatorlarni tanlashga harakat qiling (shtat pochtasi atrofida qo'shimcha bo'shliqlarsiz)
Shunday qilib, endi Keti bizning gruzinlar ro'yxatida ko'rinmaydi. Bundan ham yomoni, biz yangi davlat yaratdik:
Biz narsalarni tozalash uchun TRIM() dan foydalanishimiz mumkin:
E'tibor bering, biz UPDATE bayonotida WHERE bandidan foydalanmayapmiz. Bu shuni anglatadiki, barcha qatorlar yangilanadi, bu odatda siz xohlagan narsa emas. Yuqoridagi bayonotda SET holati = 'GA' dan foydalangan bo'lsak, o'ylab ko'ring; Endi bizda gruzinlar bilan to'la stol va tozalash kerak bo'lgan tartibsizlik bor edi. Biz bu yerda so‘zma-so‘z satrdan ko‘ra funksiyadan foydalanayotganimiz sababli, biz bir vaqtning o‘zida hamma narsani yangilashimiz, har bir holat qiymatining old va oxiridagi oq bo‘shliqni qisqartirishimiz mumkin. Funktsiya navbat bilan har bir satr uchun holat ustunidagi qiymatda ishlaydi.
Va endi biz normal holatga qaytdik:
TRIM() funksiyasidan satrning old va oxiridagi boʻshliqlardan tashqari boshqa belgilarni olib tashlash uchun ham foydalanish mumkin, garchi bu foydalanish kamroq tarqalgan boʻlsa ham. TRIM() ga qaysi belgilarni olib tashlash kerakligini aytish uchun o'chirilishi kerak bo'lgan belgilarni o'z ichiga olgan ikkinchi argumentni topshiring. Masalan, TRIM (holat, '.,') davlat nomining boshida yoki oxirida paydo bo'ladigan nuqta yoki vergullarni olib tashlaydi (ya'ni, “GA.” “GA” bo'ladi).
UPPER() va LOWER()
Nopok ma'lumotlardagi yana bir keng tarqalgan muammo - bu kapitallashuvdagi nomuvofiqliklar. Misol uchun, keling, Alabama shtatining Birmingem shahridan barcha ishtirokchilarni topamiz:
Hmm ... aftidan, ular yo'q.
Ammo biz Alabama shtatidagi barcha ishtirokchilarni tekshirganimizda, biz boshqacha hikoyaga ega bo'lamiz:
Demak, muammo shundaki, Birmingem to'g'ri bosh harf bilan yozilmagan. Endi biz city = 'birmingem' yordamida SELECTni amalga oshirishimiz mumkin edi, lekin keyin shahar nomini to'g'ri bosh harf bilan yozadigan har qanday qatorni o'tkazib yuboramiz. ALL CAPS dan foydalanadigan qatorlar haqida nima deyish mumkin?
Katta-kichik harf sezgirligi bilan bog'liq bu muammolarni hal qilishning oson yo'li qiymatlar bo'yicha bosh harflarni standartlashtirish uchun UPPER() yoki LOWER() qator funksiyalaridan foydalanishdir:
UPPER() funksiyasi shahar qiymatidagi har bir harfni katta harfga aylantiradi.
E'tibor bering, biz ushbu ustundagi qiymatlarni katta harfga o'zgartirmayapmiz. Buning o'rniga, biz WHERE bandidagi qiymatlarni faqat tanlangan so'rovdagi yozuvlarni moslashtirish maqsadida dinamik ravishda o'zgartiramiz va asl qiymatlarni o'zgarmay qoldiramiz.
Natijada, bu so'rov bizga kichik harfli versiyani beradi, lekin u "Birmingem" va "BIRMINGHAM" ("BIRMingham" haqida gapirmasa ham) mos keladi, chunki ularning barchasi UPPER() tomonidan "BIRMINGHAM" sifatida ko'rsatiladi. .
Eslatma: Sukut bo'yicha LIKE SQLite-da katta-kichik harflarga sezgir emas, lekin bu barcha ma'lumotlar bazasini boshqarish tizimlariga tegishli emas. Bundan tashqari, MySQL kabi baʼzi boshqa maʼlumotlar bazasi tizimlarida asosiy tenglik operatori (=) katta-kichik harflarga sezgir emas, lekin bu SQLiteʼda toʻgʻri emas va boshqa tizimlarda bu toʻgʻri emas. Shubha tug'ilganda, kichik harflar sezgir emasligini ta'minlash uchun LOWER() yoki UPPER() dan foydalanish xavfsizroq. (Shuningdek, ba'zi ma'lumotlar bazalari UPPER() va LOWER() o'rniga UCASE() va LCASE() dan foydalanadi.)
Do'stlaringiz bilan baham: |