Работа со строками: CONCAT, SUBSTRING, LENGTH, UPPER, LOWER и др.

📜 Строки в SQL: Твой новый супер-инструмент

Строки — это не просто текст в БД. Это данные, которые можно преобразовывать, анализировать и даже оживлять с помощью SQL. Давай разберём ключевые функции, которые сделают тебя мастером строк!


🔗 CONCAT: Собираем пазлы из строк

CONCAT склеивает строки как конструктор LEGO. Просто, но мощно!

SELECT CONCAT('Hello, ', 'SQL ', 'World!') AS greeting;
-- Результат: 'Hello, SQL World!'

А так — с данными из таблицы (пример для таблицы users):

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM users;

Фишка: В некоторых СУБД (MySQL) можно использовать || или + для конкатенации, но CONCAT работает везде!


✂️ SUBSTRING: Вырезаем нужные кусочки

SUBSTRING (или SUBSTR) — это хирургический инструмент для строк. Указываем начало и длину — получаем результат.

SELECT SUBSTRING('SQL is awesome!', 1, 3) AS result;
-- Результат: 'SQL'

Пример с датой в строке (из orders):

SELECT 
    order_id,
    SUBSTRING(order_date::TEXT, 1, 10) AS date_only  -- Преобразуем дату в текст и берём первые 10 символов (YYYY-MM-DD)
FROM orders;

Важно: Нумерация символов обычно начинается с 1 (не с 0, как в Python!).


📏 LENGTH: Измеряем длину строки

LENGTH (или LEN в некоторых СУБД) — это "линейка" для строк.

SELECT LENGTH('Supercalifragilisticexpialidocious') AS word_length;
-- Результат: 34

Практическое применение — валидация паролей:

SELECT username
FROM users
WHERE LENGTH(password) < 8;  -- Находим пользователей со слабыми паролями

🔠 UPPER и LOWER: Меняем регистр

Эти функции — "капслок" и "антикапслок" SQL-мира.

SELECT 
    UPPER('E=mc²') AS shout,
    LOWER('ПРИВЕТ, SQL!') AS whisper;
-- Результат: 'E=MC²', 'привет, sql!'

Пример для поиска без учёта регистра:

SELECT product_name
FROM products
WHERE LOWER(product_name) LIKE '%coffee%';  -- Найдёт "Coffee", "COFFEE" и даже "cOfFeE"

🔍 TRIM: Убираем лишние пробелы

TRIM чистит строки как ножницы:

SELECT TRIM('   Too many spaces!   ') AS neat_string;
-- Результат: 'Too many spaces!'

Варианты: - LTRIM — обрезает слева - RTRIM — обрезает справа


🎯 REPLACE: Меняем текст внутри строки

REPLACE — это "найти и заменить" в SQL.

SELECT REPLACE('I like cats', 'cats', 'dogs') AS new_opinion;
-- Результат: 'I like dogs'

Реальный кейс — маскирование данных:

SELECT 
    user_id,
    REPLACE(email, SUBSTRING(email, 3, POSITION('@' IN email)-3), '***') AS masked_email
FROM users;
-- Преобразует 'alice@example.com' в 'al***@example.com'

🧩 POSITION и INSTR: Ищем подстроки

Где находится определённый символ? Эти функции — детективы для строк.

SELECT POSITION('@' IN 'user@example.com') AS at_position;
-- Результат: 5

Практический пример — разбиение email:

SELECT 
    email,
    SUBSTRING(email, 1, POSITION('@' IN email)-1) AS username,
    SUBSTRING(email, POSITION('@' IN email)+1) AS domain
FROM users;

🎨 Форматируем строки красиво

Комбинируем функции для мощных преобразований:

-- Приводим имена к формату "Фамилия, И."
SELECT 
    CONCAT(
        UPPER(SUBSTRING(last_name, 1, 1)), 
        LOWER(SUBSTRING(last_name, 2)), 
        ', ', 
        UPPER(SUBSTRING(first_name, 1, 1)), 
        '.'
    ) AS formatted_name
FROM employees;
-- Преобразует 'jOhN dOe' в 'Doe, J.'

🏆 Твой черед!

Попробуй эти запросы в своей БД. Экспериментируй с:

  1. Объединением данных из разных колонок
  2. Извлечением частей строк (например, кода города из телефона)
  3. Созданием "масок" для конфиденциальных данных
  4. Автоматическим форматированием отчетов

SQL-строки — это твой швейцарский нож для работы с текстом! 🔪✨

Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty