Mətn məlumatları ilə işləmək — bu, verilənlər bazası işlərinin gündəlik hissəsidir. Təsəvvür elə ki, sən online mağaza developerisən və istifadəçilərin bazası var. Sənə istifadəçilərin tam adlarını saytda salamlayıcı banner üçün çıxarmaq lazımdır, məsələn: "Xoş gəlmisən, Otto Art!". Və ya bütün email-ləri standartlaşdırmaq istəyirsən (məsələn, onları kiçik register-ə çevirmək). Belə hallarda string əməliyyatlar olmadan keçinmək olmur.
PostgreSQL mətnlə işləmək üçün güclü alətlər verir. Bu gün biz əsas üç aləti öyrənəcəyik:
CONCAT()— sətirlərin birləşdirilməsi.UPPER()— sətiri böyük hərflərə çevirmək.LOWER()— sətiri kiçik hərflərə çevirmək.
CONCAT() funksiyası ilə işləmək
CONCAT() funksiyası bir neçə sətiri birləşdirib bir sətir edir. Əgər məlumatlar fərqli sütunlardadırsa, amma sən onları birləşdirib göstərmək istəyirsənsə, bu funksiya əvəzolunmazdır.
Sintaksis
CONCAT(string1, string2, ..., stringN)
string1,string2,stringN— birləşdirmək istədiyin sətirlər və ya sütunlardır.- Bütün arqumentlərdən ibarət bir sətir qaytarır.
Nümunə: adları işləyirik
Tutaq ki, bizdə students cədvəli var:
| first_name | last_name |
|---|---|
| Otto | Art |
| Maria | Chi |
| Anna | Pal |
Bizim tapşırıq: tələbələrin tam adlarını "Ad Soyad" formatında çıxarmaq.
Sorgu:
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
Nəticə:
| full_name |
|---|
| Otto Art |
| Maria Chi |
| Anna Pal |
Diqqət et ' ' ad və soyad arasında. Bu, sətirləri ayırmaq üçün əlavə etdiyimiz boşluqdur.
İşləmə xüsusiyyətləri
CONCAT() NULL-u saymır. Əgər arqumentlərdən biri NULL olsa, sadəcə ötürülür. Əgər hələ NULL nədir bilmirsənsə, narahat olma — biz bunu bir az sonra izah edəcəyik.
CONCAT()-a alternativ — || operatorudur, məsələn:
SELECT first_name || ' ' || last_name AS full_name FROM students;
Sətirlərin register-inin dəyişdirilməsi: UPPER() və LOWER()
Təsəvvür elə ki, sən email-lərlə işləyirsən və istifadəçilər onları müxtəlif register-lərdə yazıblar: ivan@example.com, IVAN@EXAMPLE.COM. Standartlaşdırma üçün tez-tez lazım olur:
- müqayisədən əvvəl mətnin görünüşünü eyniləşdirmək (məsələn,
lowercase). - vacib sözləri vurğulamaq (məsələn, başlıqlar üçün
UPPERCASE).
UPPER(): mətn böyük hərflərlə
UPPER() funksiyası mətni böyük hərflərlə sətirə çevirir.
Sintaksis:
UPPER(string)
string— sətir və ya mətn sütununun adı.
Nümunə:
students cədvəlinə email sütunu əlavə olunub:
| first_name | last_name | |
|---|---|---|
| Otto | Art | otto@example.com |
| Maria | Chi | MARIA@EXAMPLE.com |
| Anna | Pal | anna.pal@mail.ru |
Email-ləri böyük hərflərlə çıxarmaq istəyirik:
SELECT email, UPPER(email) AS email_upper
FROM students;
Nəticə:
| email_upper | |
|---|---|
| otto@example.com | OTTO@EXAMPLE.COM |
| MARIA@EXAMPLE.com | MARIA@EXAMPLE.COM |
| anna.pal@gmail.com | ANNA.PAL@GMAIL.COM |
LOWER(): mətn kiçik hərflərlə
Eyni qaydada, LOWER() funksiyası mətni kiçik hərflərə çevirir.
Sintaksis:
LOWER(string)
Nümunə:
Email-ləri kiçik hərflərə salaq:
SELECT email, LOWER(email) AS email_lower
FROM students;
Nəticə:
| email_lower | |
|---|---|
| otto@example.com | otto@example.com |
| MARIA@EXAMPLE.com | maria@example.com |
| anna.pal@gmail.com | anna.pal@gmail.com |
Praktiki nümunələr və case-lər
Gəlin, öyrəndiklərimizi birləşdirək.
Tam adın böyük hərflərlə yaradılması
Sorgu:
SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;
Nəticə:
| full_name_upper |
|---|
| OTTO ART |
| MARIA CHI |
| ANNA PAL |
Burada biz CONCAT() funksiyası ilə ad və soyadı birləşdirdik, UPPER() ilə isə böyük hərflərə çevirdik.
Nümunə: email-lərin standartlaşdırılması
Bütün email-ləri bir formata — kiçik hərflərə salmaq istəyirik:
UPDATE students
SET email = LOWER(email);
İndi cədvəldə bütün email-lər eyni görünür, fərqi yoxdur əvvəl necə idi.
UPDATE operatorunun necə işlədiyini növbəti dərslərdə öyrənəcəksən.
İstifadəçilər üçün salam hazırlamaq
Tam adlara "Xoş gəlmisən" salamı əlavə edək:
SELECT CONCAT('Xoş gəlmisən, ', first_name, ' ', last_name, '!') AS greeting
FROM students;
Nəticə:
| greeting |
|---|
| Xoş gəlmisən, Otto Art! |
| Xoş gəlmisən, Maria Chi! |
| Xoş gəlmisən, Anna Pal! |
Mətn funksiyaları ilə işləyərkən tipik səhvlər
Əgər CONCAT()-da boşluq buraxılsa, nəticə düz görünməyə bilər. Məsələn:
SELECT CONCAT(first_name, last_name) AS full_name
FROM students;
Nəticə olacaq: "OttoArt", "MariaChi". Həmişə lazım olan yerlərdə boşluq əlavə et.
NULL-dan istifadə. Əgər CONCAT()-ın arqumentlərindən biri NULL olsa, sətir natamam ola bilər. Məsələn:
SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;
Əgər middle_name = NULL olsa, nəticə "Otto NULL Art" olacaq. Bunu aradan qaldırmaq üçün COALESCE() funksiyasından istifadə edə bilərsən:
SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;
NULL və COALESCE() funksiyası haqqında daha ətraflı yaxın dərslərdə öyrənəcəksən :P
GO TO FULL VERSION