CodeGym /Kursy /SQL SELF /Formatowanie stringów: CONCAT(), UPPER(), LOWER()

Formatowanie stringów: CONCAT(), UPPER(), LOWER()

SQL SELF
Poziom 5, Lekcja 1
Dostępny

Praca z danymi tekstowymi to codzienność w bazach danych. Wyobraź sobie, że jesteś devem sklepu internetowego i masz bazę użytkowników. Musisz wyświetlić pełne imiona użytkowników na banerze powitalnym na stronie, np.: "Witamy, Otto Art!". Albo chcesz wystandaryzować wszystkie adresy email (np. zamienić je na małe litery). W takich przypadkach operacje na stringach są niezbędne.

PostgreSQL daje mega narzędzia do pracy z tekstem. Dzisiaj ogarniemy trzy podstawowe funkcje:

  • CONCAT() — łączenie stringów.
  • UPPER() — zamiana stringa na wielkie litery.
  • LOWER() — zamiana stringa na małe litery.

Praca z funkcją CONCAT()

Funkcja CONCAT() pozwala połączyć kilka stringów w jeden. Jest niezastąpiona, jeśli dane są w różnych kolumnach, a chcesz je połączyć do wyświetlenia.

Składnia

CONCAT(string1, string2, ..., stringN)
  • string1, string2, stringN — stringi albo kolumny, które chcesz połączyć.
  • Zwraca jeden string złożony ze wszystkich argumentów.

Przykład: obrabiamy imiona

Załóżmy, że mamy tabelę students:

first_name last_name
Otto Art
Maria Chi
Anna Pal

Nasze zadanie: wyświetlić pełne imiona studentów w formacie "Imię Nazwisko".

Zapytanie:

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;

Wynik:

full_name
Otto Art
Maria Chi
Anna Pal

Zwróć uwagę na ' ' między imieniem a nazwiskiem. To spacja, którą dodaliśmy, żeby rozdzielić stringi.

Ciekawostki

CONCAT() ignoruje NULL. Jeśli któryś z argumentów to NULL, po prostu go pomija. Jeśli jeszcze nie wiesz co to NULL, luz — wyjaśnimy to później.

Alternatywa dla CONCAT() to operator ||, np.:

SELECT first_name || ' ' || last_name AS full_name FROM students;

Zmiana wielkości liter: UPPER() i LOWER()

Wyobraź sobie, że masz adresy email wpisane przez userów w różnych wariantach: ivan@example.com, IVAN@EXAMPLE.COM. Żeby je wystandaryzować, często trzeba:

  • zamienić tekst na jeden styl przed porównaniem (np. lowercase).
  • wyróżnić ważne słowa (np. UPPERCASE dla nagłówków).

UPPER(): tekst na wielkie litery

Funkcja UPPER() zamienia tekst na string z dużych liter.

Składnia:

UPPER(string)
  • string — string albo nazwa kolumny tekstowej.

Przykład:

W tabeli students pojawiła się kolumna email:

first_name last_name email
Otto Art otto@example.com
Maria Chi MARIA@EXAMPLE.com
Anna Pal anna.pal@mail.ru

Chcemy wyświetlić adresy email wielkimi literami:

SELECT email, UPPER(email) AS email_upper
FROM students;

Wynik:

email email_upper
otto@example.com OTTO@EXAMPLE.COM
MARIA@EXAMPLE.com MARIA@EXAMPLE.COM
anna.pal@gmail.com ANNA.PAL@GMAIL.COM

LOWER(): tekst na małe litery

Podobnie, funkcja LOWER() zamienia tekst na małe litery.

Składnia:

LOWER(string)

Przykład:

Zamieniamy adresy email na małe litery:

SELECT email, LOWER(email) AS email_lower
FROM students;

Wynik:

email email_lower
otto@example.com otto@example.com
MARIA@EXAMPLE.com maria@example.com
anna.pal@gmail.com anna.pal@gmail.com

Praktyczne przykłady i case'y

Połączmy wszystko, czego się nauczyliśmy.

Tworzenie pełnego imienia wielkimi literami

Zapytanie:

SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;

Wynik:

full_name_upper
OTTO ART
MARIA CHI
ANNA PAL

Tu użyliśmy funkcji CONCAT(), żeby połączyć imię i nazwisko, i UPPER(), żeby zamienić tekst na wielkie litery.

Przykład: standaryzacja adresów email

Chcemy zamienić wszystkie adresy email na małe litery:

UPDATE students
SET email = LOWER(email);

Teraz wszystkie adresy email w tabeli wyglądają tak samo, niezależnie od oryginalnej wielkości liter.

Jak działa operator UPDATE dowiesz się w kolejnych wykładach.

Przygotowanie powitania dla użytkowników

Dodajmy do pełnych imion powitanie "Witamy":

SELECT CONCAT('Witamy, ', first_name, ' ', last_name, '!') AS greeting
FROM students;

Wynik:

greeting
Witamy, Otto Art!
Witamy, Maria Chi!
Witamy, Anna Pal!

Typowe błędy przy pracy z funkcjami tekstowymi

Jeśli pominiesz spację w CONCAT(), wynik może wyglądać dziwnie. Na przykład:

SELECT CONCAT(first_name, last_name) AS full_name
FROM students;

Wynik będzie: "OttoArt", "MariaChi". Zawsze dodawaj spację tam, gdzie trzeba.

Użycie NULL. Jeśli któryś z argumentów CONCAT() to NULL, string może być niepełny. Na przykład:

SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;

Jeśli middle_name = NULL, wynik będzie "Otto NULL Art". Żeby tego uniknąć, możesz użyć funkcji COALESCE():

SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;

Więcej o NULL i funkcji COALESCE() dowiesz się w najbliższych wykładach :P

2
Zadanie
SQL SELF, poziom 5, lekcja 1
Niedostępne
Konwersja na wielkie litery
Konwersja na wielkie litery
2
Zadanie
SQL SELF, poziom 5, lekcja 1
Niedostępne
Standaryzacja adresów email
Standaryzacja adresów email
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION