Строковые функции 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""
Поддержать проект