JavaRush /Курси /SQL SELF /Робота з рядками: LENGTH(), SUBSTRING(), TRIM(), POSITION...

Робота з рядками: LENGTH(), SUBSTRING(), TRIM(), POSITION(), REPLACE(), INITCAP()

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

Коли ти працюєш з іменами, адресами, email'ами чи будь-якими іншими текстами — майже завжди треба робити щось із цього:

  • Витягти частину рядка
  • Дізнатись довжину
  • Очистити зайві пробіли
  • Знайти/замінити фрагмент
  • Відформатувати вивід

Наприклад, тобі треба:

  • Вивести тільки прізвище з повного імені.
  • Знайти студентів, у яких прізвище починається на «П».
  • Замінити всі пробіли на підкреслення.
  • Вивести прізвище з великої літери.

Всі ці задачі легко вирішуються за допомогою рядкових функцій PostgreSQL.

LENGTH() — довжина рядка

Функція LENGTH() повертає кількість символів у рядку.

Синтаксис:

LENGTH(string)

Приклад:

SELECT name, LENGTH(name) AS name_length
FROM students;
name name_length
Art 3
Song 4
Pal 3

Корисно для перевірки довжини ПІБ, паролів та інших текстів.

SUBSTRING() — витяг частини рядка

Дозволяє дістати підрядок зі рядка — наприклад, перші 3 символи прізвища або домен з email.

Синтаксис:

SUBSTRING(string FROM start FOR length)
  • start — позиція першого символу (нумерація з 1)
  • length — скільки символів витягнути

Приклад 1: перші 3 букви прізвища

SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
last_name prefix
Song Son
Pal Pal

Приклад 2: домен email'а

SELECT email, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM students;
email domain
otto@example.com example.com
maria@gmail.com gmail.com

TRIM() — видалення зайвих пробілів

Видаляє пробіли (та інші символи) на початку і/або в кінці рядка.

Синтаксис:

TRIM([LEADING | TRAILING | BOTH] chars FROM string)

Але найчастіше використовується просто:

TRIM(string)

Приклад:

SELECT '[' || TRIM('   Art   ') || ']' AS cleaned;
cleaned
[Art]

Особливо важливо, якщо користувачі вводять дані вручну (наприклад, з пробілами на початку).

POSITION() — пошук підрядка

Повертає позицію, з якої починається підрядок.

Синтаксис:

POSITION(substring IN string)

Приклад:

SELECT email, POSITION('@' IN email) AS at_position
FROM students;
email at_position
otto@example.com 5
anna.pal@gmail.com 9

Можна використовувати з SUBSTRING() для витягу частин рядка.

REPLACE() — заміна підрядка

Замінює всі входження однієї підрядка на іншу.

Синтаксис:

REPLACE(string, from_substring, to_substring)

Приклад: замінити пробіли на підкреслення

SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
name fixed_name
Otto Art Otto_Art
Maria Chi Maria_Chi

INITCAP() — перша літера велика

Перетворює рядок так, щоб перша літера кожного слова була великою, інші — маленькі.

Синтаксис:

INITCAP(string)

Приклад:

SELECT INITCAP('anna pal') AS full_name;
full_name
Anna Pal

Зручно для стандартизації ПІБ.

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