Pelajaran modul (1/4)
Fungsi string
PostgreSQL memiliki lusinan fungsi untuk memanipulasi string. Dalam pelajaran ini
kita melihat yang paling umum dalam pekerjaan nyata: normalisasi (LOWER/UPPER),
mengukur (LENGTH), menyusun (|| / CONCAT), mengekstraksi (SUBSTRING),
pembersihan (TRIM), penggantian (REPLACE), dan pencarian pola
(LIKE / ILIKE).
Fungsi yang akan kita gunakan
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'|| adalah operator SQL standar untuk menggabungkan string; CONCAT adalah
lebih permisif (mengabaikan NULLs, sementara || menyebarkannya:
'a' || NULL → NULL).
LIKE dan ILIKE: mencari berdasarkan pola
LIKE mencari pola: % = barisan apa saja, _ = satu barisan
karakter. Ini peka huruf besar/kecil. ILIKE adalah PostgreSQL
varian tidak peka huruf besar-kecil:
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)Untuk mencari % atau _ literal di dalam pola, gunakan ESCAPE:
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"Menggabungkan fungsi
Fungsi menulis seperti dalam bahasa apa pun:
-- 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;Cobalah
Untuk setiap pelanggan, tampilkan email dalam huruf kecil (kolom email) dan nama lengkap sebagai 'nama_depan nama_akhir' (kolom nama_lengkap). Pesan berdasarkan ID.
Tunjukkan petunjuk
RENDAH untuk kolom pertama, || untuk digabungkan dengan spasi di antaranya.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Temukan semua produk yang mengandung kata 'laptop' (dalam hal apa pun) di namanya. Tampilkan hanya kolom nama. Pesan berdasarkan nama.
Tunjukkan petunjuk
ILIKE tidak membedakan huruf besar-kecil. Gunakan '%laptop%' untuk mencocokkan 'laptop' di posisi mana pun.
Solusi tersedia setelah 3 upaya