Modül dersleri (1/4)
Dize işlevleri
PostgreSQL'in dizeleri işlemek için düzinelerce işlevi vardır. Bu derste
gerçek işte en yaygın olanlara bakıyoruz: normalleştirme (LOWER/UPPER),
ölçme (LENGTH), oluşturma (|| / CONCAT), çıkarma (SUBSTRING),
temizleme (TRIM), değiştirme (REPLACE) ve kalıp arama
(LIKE / ILIKE).
Kullanacağımız fonksiyonlar
LOWER('Alice') -- 'alice'
UPPER('alice') -- 'ALICE'
LENGTH('alice') -- 5
'a' || 'b' -- 'ab' (concatenazione)
CONCAT('a', 'b', 'c') -- 'abc' (versione "funzione")
SUBSTRING('hello' FROM 2 FOR 3) -- 'ell'
TRIM(' alice ') -- 'alice'
REPLACE('foo bar', 'bar','x') -- 'foo x'|| dizeleri birleştirmek için standart SQL operatörüdür; CONCAT şuydu:
daha hoşgörülü (NULL'leri yok sayar, || ise onları yayar:
'a' || NULL → NULL).
LIKE ve ILIKE: desene göre arama
LIKE bir kalıp arar: % = herhangi bir dizi, _ = tek bir dizi
karakter. Büyük/küçük harfe duyarlıdır. ILIKE PostgreSQL'dir
büyük/küçük harfe duyarlı olmayan değişken:
WHERE name LIKE '%Cuffie%' -- match esatto "Cuffie"
WHERE name ILIKE '%cuffie%' -- match anche "CUFFIE", "Cuffie", "cuffie"
WHERE email LIKE '%@example.com'
WHERE first_name LIKE 'A_____' -- inizia per A, lungo 6 (A + 5 caratteri)Desenin içinde gerçek bir % veya _ aramak için ESCAPE kullanın:
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"Fonksiyonları birleştirme
İşlevler herhangi bir dilde olduğu gibi oluşturulur:
-- Email "normalizzata" e iniziali in maiuscolo:
SELECT LOWER(email) AS email_norm,
UPPER(SUBSTRING(first_name FROM 1 FOR 1)) || '.'
|| UPPER(SUBSTRING(last_name FROM 1 FOR 1)) || '.' AS iniziali
FROM customers
ORDER BY id;Deneyin
Her müşteri için, e-postayı küçük harfle (e-posta sütunu) ve tam adı 'ad_adı soyadı_adı' (tam_adı sütunu) olarak gösterin. Kimliğe göre sipariş verin.
İpucu göster
İlk sütun için ALT, || aradaki boşlukla birleştirmek için.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
Adında 'dizüstü bilgisayar' kelimesini (her durumda) içeren tüm ürünleri bulun. Yalnızca ad sütununu göster. İsme göre sipariş verin.
İpucu göster
ILIKE büyük/küçük harfe duyarlı değildir. Herhangi bir konumdaki 'dizüstü bilgisayarı' eşleştirmek için '%laptop%' kullanın.
3 denemeden sonra çözüm mevcut