Przejdź do głównej treści
eLearner.app
Moduł 6 · Lekcja 1 z 421/57 w kursie~12 min
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ć

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'

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

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)

Aby wyszukać we wzorcu dosłowny % lub _, użyj ESCAPE:

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

Łączenie funkcji

Funkcje komponowania jak w każdym języku:

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;

Spróbuj

Ćwiczenie#sql.m6.l1.e1
Próby: 0Ładowanie...

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.

Ładowanie edytora...
Pokaż wskazówkę

NIŻSZA dla pierwszej kolumny, || łączyć ze spacją pomiędzy.

Rozwiązanie dostępne po 3 próbach

Przejrzyj ćwiczenie

Ćwiczenie#sql.m6.l1.e2
Próby: 0Ładowanie...

Znajdź wszystkie produkty zawierające w nazwie słowo „laptop” (w każdym przypadku). Pokaż tylko kolumnę nazwy. Zamawiaj według nazwy.

Ładowanie edytora...
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