Ana içeriğe geç
Modül 6 · Ders 1 ders 4Kurstaki 21/57~12 min
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

SQL
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:

SQL
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:

SQL
WHERE titolo LIKE '%50\%%' ESCAPE '\';   -- contiene "50%"

Fonksiyonları birleştirme

İşlevler herhangi bir dilde olduğu gibi oluşturulur:

SQL
-- 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

Egzersiz#sql.m6.l1.e1
Denemeler: 0Yükleniyor…

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.

Düzenleyici yükleniyor…
İ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

Egzersiz#sql.m6.l1.e2
Denemeler: 0Yükleniyor…

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.

Düzenleyici yükleniyor…
İ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