Коли ти працюєш з іменами, адресами, 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;
| 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;
| 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 |
Зручно для стандартизації ПІБ.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ