JavaRush /Курси /SQL SELF /Форматування рядків: CONCAT(), UPPER(), LOWER()

Форматування рядків: CONCAT(), UPPER(), LOWER()

SQL SELF
Рівень 5 , Лекція 1
Відкрита

Робота з текстовими даними — це щоденна частина задач баз даних. Уяви, ти розробник інтернет-магазину, і в тебе є база користувачів. Треба вивести повні імена користувачів для вітального банера на сайті, наприклад: "Ласкаво просимо, Otto Art!". Або треба стандартизувати всі email-адреси (наприклад, перевести їх у нижній регістр). Без строкових операцій тут ніяк.

PostgreSQL дає потужні інструменти для роботи з текстом. Сьогодні розглянемо три основних інструменти:

  • CONCAT() — об'єднання рядків.
  • UPPER() — перетворення рядка у верхній регістр.
  • LOWER() — перетворення рядка у нижній регістр.

Робота з функцією CONCAT()

Функція CONCAT() дозволяє з'єднувати декілька рядків в один. Вона незамінна, якщо дані зберігаються у різних стовпцях, а тобі треба їх об'єднати для виводу.

Синтаксис

CONCAT(string1, string2, ..., stringN)
  • string1, string2, stringN — рядки або стовпці, які ти хочеш об'єднати.
  • Повертає один рядок, що складається з усіх аргументів.

Приклад: обробляємо імена

Припустимо, у нас є таблиця students:

first_name last_name
Otto Art
Maria Chi
Anna Pal

Наша задача: вивести повні імена студентів у форматі "Ім'я Прізвище".

Запит:

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

Результат:

full_name
Otto Art
Maria Chi
Anna Pal

Зверни увагу на ' ' між ім'ям і прізвищем. Це пробіл, який ми додали для розділення рядків.

Особливості роботи

CONCAT() ігнорує NULL. Якщо один з аргументів дорівнює NULL, він просто пропускається. Якщо ти ще не знаєш, що таке NULL, не переймайся — розкажемо трохи пізніше.

Альтернатива CONCAT() — оператор ||, наприклад:

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

Зміна регістру рядків: UPPER() і LOWER()

Уяви, ти працюєш з email-адресами, які користувачі ввели у різних регістрах: ivan@example.com, IVAN@EXAMPLE.COM. Для стандартизації часто треба:

  • привести текст до одного вигляду перед порівнянням (наприклад, lowercase).
  • виділити важливі слова (наприклад, UPPERCASE для заголовків).

UPPER(): текст у верхній регістр

Функція UPPER() переводить текст у рядок великих літер.

Синтаксис:

UPPER(string)
  • string — рядок або назва текстового стовпця.

Приклад:

У таблиці students додався стовпець email:

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

Хочемо вивести email-адреси у верхньому регістрі:

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

Результат:

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

LOWER(): текст у нижній регістр

Аналогічно, функція LOWER() переводить текст у нижній регістр.

Синтаксис:

LOWER(string)

Приклад:

Приведемо email-адреси у нижній регістр:

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

Результат:

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

Практичні приклади та кейси

Давай об'єднаємо все, що розібрали вище.

Створення повного імені у верхньому регістрі

Запит:

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

Результат:

full_name_upper
OTTO ART
MARIA CHI
ANNA PAL

Тут ми використали функцію CONCAT(), щоб об'єднати ім'я і прізвище, і UPPER() для переведення тексту у верхній регістр.

Приклад: стандартизація email-адрес

Хочемо привести всі email-адреси до одного вигляду — нижнього регістру:

UPDATE students
SET email = LOWER(email);

Тепер всі email-адреси в таблиці виглядають однаково, незалежно від початкового регістру.

Як працює оператор UPDATE ти дізнаєшся у наступних лекціях.

Підготовка привітання для користувачів

Додаємо до повних імен привітання "Ласкаво просимо":

SELECT CONCAT('Ласкаво просимо, ', first_name, ' ', last_name, '!') AS greeting
FROM students;

Результат:

greeting
Ласкаво просимо, Otto Art!
Ласкаво просимо, Maria Chi!
Ласкаво просимо, Anna Pal!

Типові помилки при роботі з текстовими функціями

Якщо пропустити пробіл у CONCAT(), результат може виглядати дивно. Наприклад:

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

Результат буде: "OttoArt", "MariaChi". Завжди додавай пробіл у потрібних місцях.

Використання NULL. Якщо один з аргументів CONCAT() дорівнює NULL, рядок може бути неповним. Наприклад:

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

Якщо middle_name = NULL, то результат буде "Otto NULL Art". Щоб цього уникнути, можна використати функцію COALESCE():

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

Більше про NULL і функцію COALESCE() дізнаєшся у найближчих лекціях :P

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ