Ko'pincha jadvaldagi matnli (TEXT) ma'lumotni shunchaki chiqarib qo'yish kifoya qilmaydi — uni biroz o'zgartirib, chiroyliroq yoki qulayroq ko'rinishga keltirish kerak bo'ladi. Masalan, ikkita matnni birlashtirish, harflarni katta yoki kichik qilish, matnning bir qismini olish kabi.
SQL ana shu ishlar uchun maxsus matn funksiyalarini taklif qiladi. Bu darsda ulardan eng ko'p ishlatiladiganlari bilan tanishamiz.
Misollar uchun bizga tanish mahsulotlar jadvalidan foydalanamiz:
| id | nomi | kategoriya | narx | ombor |
|---|---|---|---|---|
| 1 | Telefon | Elektronika | 5000000 | 10 |
| 2 | Noutbuk | Elektronika | 12000000 | 5 |
| 3 | Quloqchin | Elektronika | 300000 | 50 |
| 4 | Kitob | Kitoblar | 50000 | 100 |
||Ikki yoki undan ko'p matnni bitta matnga birlashtirish uchun || operatoridan foydalanamiz (ikki tik chiziq). Bu operator chap va o'ng tomondagi qiymatlarni yopishtirib, yagona matn hosil qiladi.
SELECT nomi || ' - ' || kategoriya FROM mahsulotlar;Bu yerda biz nomi, so'ng ' - ' matni va kategoriyani ketma-ket yopishtirdik:
Telefon - Elektronika
Noutbuk - Elektronika
Quloqchin - Elektronika
Kitob - KitoblarEslatma: Tirnoq (
' ') ichida xohlagan o'zingiz yozgan matn (bo'shliq, qavs, tire va h.k.) bo'lishi mumkin. Mana shuning yordamida ustunlar orasiga xohlagan ajratuvchini qo'yasiz.
Muhim: Ba'zi ma'lumotlar bazalarida birlashtirish uchun
CONCAT()funksiyasi ishlatiladi, lekin biz ishlatadigan tizimda u yo'q. Shuning uchun matnlarni birlashtirishda doimo||operatoridan foydalaning.
UPPER va LOWERUPPER() matndagi barcha harflarni katta (bosh) harfga, LOWER() esa kichik harfga aylantiradi:
SELECT UPPER(nomi), LOWER(nomi) FROM mahsulotlar;TELEFON|telefon
NOUTBUK|noutbuk
QULOQCHIN|quloqchin
KITOB|kitobLENGTHLENGTH() matndagi belgilar (harflar) sonini qaytaradi:
SELECT nomi, LENGTH(nomi) FROM mahsulotlar;Telefon|7
Noutbuk|7
Quloqchin|9
Kitob|5SUBSTRSUBSTR(matn, boshlanish, uzunlik) funksiyasi matnning bir bo'lagini kesib oladi. Birinchi belgi 1-o'rinda turadi. boshlanish — qaysi belgidan boshlash, uzunlik — nechta belgi olish kerakligini bildiradi:
SELECT SUBSTR(nomi, 1, 3) FROM mahsulotlar;Bu har bir nomning dastlabki 3 ta belgisini oladi:
Tel
Nou
Qul
KitREPLACEREPLACE(matn, eski, yangi) matn ichidagi eski parchani topib, uni yangisiga almashtiradi:
SELECT REPLACE(kategoriya, 'Elektronika', 'Texnika') FROM mahsulotlar;Elektronika so'zlari Texnika bilan almashtiriladi (boshqalari o'zgarmaydi):
Texnika
Texnika
Texnika
KitoblarTRIMTRIM() matnning bosh va oxiridagi ortiqcha bo'shliqlarni olib tashlaydi (o'rtasidagilarga tegmaydi):
SELECT TRIM(' Salom ');SalomEslatma: Bu funksiyalarni bir-biriga ulab ham ishlatish mumkin. Masalan,
UPPER(SUBSTR(nomi, 1, 3))avval dastlabki 3 belgini kesib oladi, so'ng ularni katta harfga aylantiradi.
Pastdagi kod oynasida mahsulotlar jadvali allaqachon yaratilgan va to'ldirilgan.
Sizning vazifangiz — || operatori yordamida har bir mahsulot uchun nomi (kategoriya) ko'rinishidagi matn hosil qilib, uni id tartibida chiqaruvchi SELECT so'rovini yozish. Masalan, birinchi qator Telefon (Elektronika) bo'lishi kerak.