Lompati ke konten utama
Modul 6 · Pelajaran 1 dari 421/57 dalam kursus~12 min
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

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'

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

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)

Untuk mencari % atau _ literal di dalam pola, gunakan ESCAPE:

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

Menggabungkan fungsi

Fungsi menulis seperti dalam bahasa apa pun:

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;

Cobalah

Latihan#sql.m6.l1.e1
Upaya: 0Memuat…

Untuk setiap pelanggan, tampilkan email dalam huruf kecil (kolom email) dan nama lengkap sebagai 'nama_depan nama_akhir' (kolom nama_lengkap). Pesan berdasarkan ID.

Memuat editor…
Tunjukkan petunjuk

RENDAH untuk kolom pertama, || untuk digabungkan dengan spasi di antaranya.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#sql.m6.l1.e2
Upaya: 0Memuat…

Temukan semua produk yang mengandung kata 'laptop' (dalam hal apa pun) di namanya. Tampilkan hanya kolom nama. Pesan berdasarkan nama.

Memuat editor…
Tunjukkan petunjuk

ILIKE tidak membedakan huruf besar-kecil. Gunakan '%laptop%' untuk mencocokkan 'laptop' di posisi mana pun.

Solusi tersedia setelah 3 upaya