Строковые функции UPPER, LOWER, LENGTH, SUBSTR, REPLACE
Строковые функции SQL: UPPER, LOWER, LENGTH, SUBSTR, REPLACE и конкатенация — преобразование текста прямо в запросе.
Строковые функции позволяют изменять, анализировать и комбинировать текстовые значения непосредственно в SQL — без выгрузки данных в приложение.
UPPER и LOWER
Приводят строку к верхнему или нижнему регистру:
SELECT
emp_name,
UPPER(emp_name) AS upper_name,
LOWER(emp_name) AS lower_name
FROM employees
LIMIT 3;
Результат:
emp_name | upper_name | lower_name ------------+---------------+------------- Ethan Hunt | ETHAN HUNT | ethan hunt Tony Montana | TONY MONTANA | tony montana Sarah Connor | SARAH CONNOR | sarah connor
LENGTH
Возвращает длину строки в символах:
SELECT emp_name, LENGTH(emp_name) AS name_len
FROM employees
ORDER BY name_len DESC;
Результат:
emp_name | name_len -------------+--------- Tony Montana | 12 Sarah Connor | 12 Martin Blank | 12 Rick Deckard | 12 Ethan Hunt | 10
SUBSTR
SUBSTR(string, start, length) — вырезает подстроку. Нумерация символов начинается с 1:
-- Первые 5 символов имени
SELECT emp_name, SUBSTR(emp_name, 1, 5) AS short_name
FROM employees;
Результат:
emp_name | short_name -------------+----------- Ethan Hunt | Ethan Tony Montana | Tony Sarah Connor | Sarah Rick Deckard | Rick Martin Blank | Marti
REPLACE
REPLACE(string, from, to) — заменяет все вхождения подстроки:
SELECT
cust_name,
city,
REPLACE(city, 'Madrid', 'Barcelona') AS new_city
FROM customers
WHERE city = 'Madrid';
Результат:
cust_name | city | new_city -------------------+--------+----------- Fran Wilson | Madrid | Barcelona Christina Aguilera | Madrid | Barcelona
Конкатенация строк
В SQLite строки соединяют оператором ||:
SELECT
emp_name || ' (dept ' || COALESCE(CAST(dept_id AS TEXT), '?') || ')' AS label
FROM employees;
Результат:
label ---------------------- Ethan Hunt (dept 4) Tony Montana (dept 1) Sarah Connor (dept 5) Rick Deckard (dept 3) Martin Blank (dept ?)
CAST(dept_id AS TEXT)переводит число в строку;COALESCEзаменяет NULL на'?'— подробнее о нём в статье про условные выражения.
TRIM
TRIM(string) удаляет пробелы (или другой символ) с обоих концов строки. Полезно при чистке данных:
SELECT TRIM(' hello world ') AS cleaned;
Результат:
cleaned ----------- hello world
Справочная таблица
| Функция | Что делает |
UPPER(s) | верхний регистр |
LOWER(s) | нижний регистр |
LENGTH(s) | длина строки |
SUBSTR(s, n, len) | подстрока с позиции n длиной len |
REPLACE(s, a, b) | заменить a на b |
TRIM(s) | убрать пробелы по краям |
s1 || s2 | конкатенация (SQLite) |
Коротко
UPPER/LOWERменяют регистр; удобно для сравнений без учёта регистра.LENGTHвозвращает длину в символах.SUBSTR(s, 1, 5)вырезает первые 5 символов.REPLACEзаменяет все вхождения подстроки.- Конкатенация в SQLite — оператор
||.
Проверьте себя
1. Что вернёт SUBSTR("Hello World", 7, 5)?
A"Hello"
B"World"
C"lo Wo"
D"llo W"
2. Какой оператор используется для конкатенации строк в SQLite?
ACONCAT()
B+
C||
D&
3. Что вернёт LENGTH(NULL)?
A0
BNULL
CОшибку
D""