LEFT() и RIGHT() в SQL — взять первые или последние N символов строки

LEFT(str, N) возвращает первые N символов строки, RIGHT(str, N) — последние N. Аналитику это нужно для быстрой обрезки: код страны из телефона, последние 4 цифры карты, год из даты-строки. Обе функции есть в PostgreSQL и MySQL, но в SQLite их нет — там пользуются SUBSTR (SUBSTR(str, 1, N) вместо LEFT и SUBSTR(str, -N) вместо RIGHT).

Синтаксис

LEFT(строка, N) RIGHT(строка, N)

Примеры использования

Пример 1: Последние 4 цифры карты

SELECT RIGHT(card_number, 4) AS last4
FROM payments
LIMIT 3;

Результат:

last4
4242
0000
1881

Пример 2: Код страны из телефона

SELECT phone,
       LEFT(phone, 2) AS code
FROM users
LIMIT 3;

Результат:

phone       | code
79991234567 | 79
78005553535 | 78

Пример 3: Год из даты-строки

SELECT order_date,
       LEFT(order_date::text, 4) AS year
FROM orders
LIMIT 3;

Результат:

order_date | year
2026-05-10 | 2026
2025-11-30 | 2025
Порешать SQL-задачи в тренажёре →

Типичная ошибка

Если N больше длины строки, возвращается вся строка целиком (без ошибки). NULL на входе даёт NULL. В PostgreSQL допустим отрицательный N: LEFT(str, -3) вернёт строку без последних трёх символов, RIGHT(str, -3) — без первых трёх. В SQLite функций LEFT/RIGHT просто нет.

Где спрашивают на собеседовании

Всплывает в задачах на маскировку и извлечение фиксированных префиксов/суффиксов — рядом идут SUBSTRING и LENGTH.

FAQ: частые вопросы про LEFT

Есть ли LEFT и RIGHT в SQLite?

Нет, встроенных LEFT/RIGHT в SQLite нет. Замените их на SUBSTR: LEFT(str, N) → SUBSTR(str, 1, N), а RIGHT(str, N) → SUBSTR(str, -N). В PostgreSQL и MySQL обе функции доступны напрямую.

Что делает LEFT с отрицательным N в PostgreSQL?

LEFT(str, -N) возвращает строку без последних N символов, а RIGHT(str, -N) — без первых N символов. Это удобно, чтобы отрезать хвост или начало известной длины, но в MySQL такое поведение не гарантируется.

Чем LEFT отличается от SUBSTRING?

LEFT — это сокращение для взятия символов от начала строки. SUBSTRING/SUBSTR гибче: позволяет задать и стартовую позицию, и длину, поэтому LEFT(str, N) эквивалентен SUBSTRING(str, 1, N). Для конца строки RIGHT удобнее, чем считать позицию вручную.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы SQL

Строковые функции

Другие функции SQL

SUBSTR · CONCAT · REPLACE · TRIM · UPPER / LOWER · LENGTH

Открыть SQL-тренажёр (565 задач) →