Lekcje modułu (1/4)
Funkcje na ciągach znaków
PostgreSQL ma dziesiątki funkcji do manipulowania ciągami znaków. W tej lekcji
patrzymy na te najczęściej spotykane w prawdziwej pracy: normalizowanie (LOWER/UPPER),
mierzenie (LENGTH), komponowanie (|| / CONCAT), wyodrębnianie (SUBSTRING),
czyszczenie (TRIM), podstawianie (REPLACE) i wyszukiwanie wzorców
(KODEF8 / KODEF9).
Funkcje, których będziemy używać
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'|| to standardowy operator SQL służący do łączenia ciągów znaków; KODEF1 jest
bardziej liberalny (ignoruje NULL, podczas gdy || je propaguje:
KODEF4 → KODEF5).
LIKE i ILIKE: wyszukiwanie według wzorca
LIKE szuka wzorca: % = dowolna sekwencja, _ = pojedynczy
charakter. Ważna jest wielkość liter. ILIKE to PostgreSQL
wariant bez uwzględniania wielkości liter:
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)Aby wyszukać we wzorcu dosłowny % lub _, użyj ESCAPE:
WHERE titolo LIKE '%50\%%' ESCAPE '\'; -- contiene "50%"Łączenie funkcji
Funkcje komponowania jak w każdym języku:
-- 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;Spróbuj
Dla każdego klienta podaj adres e-mail zapisany małymi literami (e-mail w kolumnie) i pełne imię i nazwisko jako „imię i nazwisko” (kolumna imię i nazwisko). Zamów według identyfikatora.
Pokaż wskazówkę
NIŻSZA dla pierwszej kolumny, || łączyć ze spacją pomiędzy.
Rozwiązanie dostępne po 3 próbach
Przejrzyj ćwiczenie
Znajdź wszystkie produkty zawierające w nazwie słowo „laptop” (w każdym przypadku). Pokaż tylko kolumnę nazwy. Zamawiaj według nazwy.
Pokaż wskazówkę
ILIKE nie uwzględnia wielkości liter. Użyj „%laptop%”, aby dopasować „laptop” w dowolnej pozycji.
Rozwiązanie dostępne po 3 próbach