Функции для работы со строками в SQL

В SQL существует множество встроенных функций для работы со строками, которые могут различаться в зависимости от конкретной системы управления базами данных (СУБД). Вот некоторые из наиболее распространенных функций, которые можно найти в таких системах, как MySQL, PostgreSQL, SQL Server и Oracle:

Общие строковые функции

  1. CONCAT: Объединяет две или более строк.

    SELECT CONCAT('Hello', ' ', 'World'); -- Результат: 'Hello World'
  2. SUBSTRING (или SUBSTR): Извлекает подстроку из строки.

    SELECT SUBSTRING('Hello World', 7, 5); -- Результат: 'World'
  3. LENGTH (или LEN, CHAR_LENGTH): Возвращает длину строки.

    SELECT LENGTH('Hello World'); -- Результат: 11
  4. LOWER: Преобразует строку в нижний регистр.

    SELECT LOWER('Hello World'); -- Результат: 'hello world'
  5. UPPER: Преобразует строку в верхний регистр.

    SELECT UPPER('Hello World'); -- Результат: 'HELLO WORLD'
  6. TRIM: Удаляет пробельные символы с начала и конца строки.

    SELECT TRIM('  Hello World  '); -- Результат: 'Hello World'
  7. LTRIM: Удаляет пробельные символы с начала строки.

    SELECT LTRIM('  Hello World  '); -- Результат: 'Hello World  '
  8. RTRIM: Удаляет пробельные символы с конца строки.

    SELECT RTRIM('  Hello World  '); -- Результат: '  Hello World'
  9. REPLACE: Заменяет все вхождения подстроки в строке.

    SELECT REPLACE('Hello World', 'o', 'a'); -- Результат: 'Hella Warld'
  10. INSTR (или CHARINDEX): Возвращает позицию первого вхождения подстроки в строке.

    SELECT INSTR('Hello World', 'o'); -- Результат: 5

Дополнительные строковые функции

  1. REVERSE: Возвращает строку в обратном порядке.

    SELECT REVERSE('Hello World'); -- Результат: 'dlroW olleH'
  2. LPAD: Дополняет строку слева до указанной длины.

    SELECT LPAD('Hello', 10, '*'); -- Результат: '*****Hello'
  3. RPAD: Дополняет строку справа до указанной длины.

    SELECT RPAD('Hello', 10, '*'); -- Результат: 'Hello*****'
  4. SOUNDEX: Возвращает звуковое представление строки (полезно для поиска похожих звуков).

    SELECT SOUNDEX('Smith'), SOUNDEX('Smythe'); -- Результат: 'S530', 'S530'
  5. FORMAT: Форматирует строку с учетом локали (например, для чисел и дат).

    SELECT FORMAT(1234567.89, 'N', 'en-us'); -- Результат: '1,234,567.89'
  6. REGEXP_LIKE (или SIMILAR TO): Выполняет поиск по регулярному выражению.

    SELECT 'Hello World' REGEXP 'o W'; -- Результат: 1 (true)
  7. ASCII: Возвращает ASCII-код первого символа строки.

    SELECT ASCII('A'); -- Результат: 65
  8. CHAR: Возвращает символ по заданному ASCII-коду.

    SELECT CHAR(65); -- Результат: 'A'
  9. LEFT: Возвращает указанное количество символов с начала строки.

    SELECT LEFT('Hello World', 5); -- Результат: 'Hello'
  10. RIGHT: Возвращает указанное количество символов с конца строки.

    SELECT RIGHT('Hello World', 5); -- Результат: 'World'

Примеры использования строковых функций в запросах

Предположим, у нас есть таблица employees с колонками first_name и last_name. Мы хотим выбрать имена и фамилии сотрудников, объединенные в одну строку, и преобразовать их в верхний регистр.

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

Если мы хотим выбрать имена сотрудников, у которых длина имени больше 5 символов, и при этом обрезать пробелы в начале и конце строк:

SELECT TRIM(first_name) AS trimmed_name
FROM employees
WHERE LENGTH(first_name) > 5;

Важные замечания

  1. Совместимость: Некоторые функции могут иметь разные названия в разных СУБД. Например, LENGTH в MySQL, LEN в SQL Server, CHAR_LENGTH в PostgreSQL.

  2. Производительность: Использование строковых функций может повлиять на производительность запросов, особенно при работе с большими объемами данных. Важно оптимизировать запросы и индексы для улучшения производительности.

  3. Обработка NULL: Многие строковые функции возвращают NULL, если один из аргументов равен NULL. Важно учитывать это при написании запросов.

Использование строковых функций позволяет выполнять разнообразные операции с текстовыми данными в SQL, что делает их незаменимыми инструментами для работы с базами данных.

Last updated