Перейти до основного вмісту
Модуль 6 · Урок 1 із 421/57 у курсі~12 min
Модульні уроки (1/4)

Рядкові функції

PostgreSQL має десятки функцій для роботи з рядками. У цьому уроці ми розглянемо найпоширеніші в реальній роботі: нормалізація (LOWER/UPPER), вимірювання (LENGTH), складання (|| / CONCAT), вилучення (SUBSTRING), очищення (TRIM), заміна (REPLACE) і пошук шаблонів (LIKE / ILIKE).

Функції, які ми будемо використовувати

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'

|| — стандартний оператор SQL для конкатенації рядків; CONCAT є більш дозволений (він ігнорує NULLs, тоді як || поширює їх: 'a' || NULL → NULL).

LIKE та ILIKE: пошук за шаблоном

LIKE шукає шаблон: % = будь-яка послідовність, _ = одна характер. Він чутливий до регістру. ILIKE — це PostgreSQL Варіант без урахування регістру:

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)

Щоб шукати літерали % або _ в шаблоні, використовуйте ESCAPE:

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

Об'єднання функцій

Функції компонують як у будь-якій мові:

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;

Спробуйте

вправи#sql.m6.l1.e1
Спроби: 0Завантаження…

Для кожного клієнта відображайте електронну адресу в нижньому регістрі (стовпець електронної пошти) і повне ім’я як «ім’я прізвище» (стовпець повне_ім’я). Замовлення по id.

Завантаження редактора…
Показати підказку

LOWER для першого стовпця, || для об’єднання з пробілом між ними.

Рішення доступне після 3 спроб

Повторна вправа

вправи#sql.m6.l1.e2
Спроби: 0Завантаження…

Знайдіть усі продукти, у назві яких є слово «ноутбук» (у будь-якому регістрі). Показати лише стовпець імені. Порядок по імені.

Завантаження редактора…
Показати підказку

ILIKE не враховує регістр. Використовуйте "%laptop%", щоб відповідати "ноутбук" у будь-якому місці.

Рішення доступне після 3 спроб