TOP

SQL-Урок 7. Функции обработки данных

Как и в большинстве языков программирования, в SQL есть функции для обработки данных. Следует отметить, что в отличие от SQL-операторов, функции не являются стандартизированными для всех видов СУБД, то есть для выполнения одних и тех же операций над данными, разные СУБД имеют свои собственные названия функций. Это означает, что код запроса, написанный в одной СУБД, может не работать в другой, и это нужно учитывать в дальнейшем. Больше всего это касается функций обработки текстовых значений, преобразования типов данных и манипуляций над датами.


В большинстве СУБД поддерживается стандартный набор типов функций, а именно:

  • Текстовые функции, используемые для обработки текста (выделение части символов из текста, определение длины текста, перевод символов в верхний или нижний регистр...);
  • Числовые функции. Используются для выполнения математических операций над числовыми значениями;
  • Функции даты и времени (производятся манипулирование датой и временем, рассчитываются период между датами, проверяются даты на корректность и т.п.);
  • Статистические функции (для вычисления максимальных/минимальных значений, средних значений, подсчет количества и суммы...);
  • Системные функции (предоставляют разного рода служебную информацию о СУБД, пользователе и др.).
  • 1. Функции SQL для обработки текста

    Реализация SQL в MS Access имеет следующие функции для обработки текста:

    Функция Описание
    Left() Отбор символов в тексте слева
    Right() Отбирает символы в тексте справа
    Mid() Отбор символов изнутри текста
    UCase() Перевод символов в верхний регистр
    LCase() Перевод символов в нижний регистр
    LTrim() Удаляет все пустые символы слева от текста
    RTrim() Удаляет все пустые символы справа от текста
    Trim() Удаляет все пустые символы с обеих сторон текста

    Переведем названия товаров в верхний регистр с помощью функции UCase():

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Выделим первые три символа в тексте с помощью функции LEFT():

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Функции SQL для обработки чисел

    Функции обработки чисел предназначены для выполнения математических операций над числовыми данными. Эти функции предназначены для алгебраических и геометрических вычислений, поэтому они используются гораздо реже функций обработки даты и времени. Однако числовые функции наиболее стандартизированы для всех версий SQL. Давайте посмотрим на список числовых функций:

    Функция Описание
    SQR() Возвращает квадратный корень указанного числа
    ABS() Возвращает абсолютное значение числа
    EXP() Возвращает экспоненту указанного числа
    SIN() Возвращает синус указанного угла
    COS() Возвращает косинус указанного угла
    TAN() Возвращает тангенс указанного угла

    Мы привели лишь несколько основных функций, однако вы всегда можете обратиться к документации СУБД, чтобы просмотреть полный перечень функций, поддерживаемых с их подробным описанием.

    Например, напишем запрос для получения квадратного корня для чисел в столбце Amount с помощью функции SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    В MySQL используется функция SQRT() для получения квадратного корня из числа.

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

    Функции манипулирования датой и временами являются одними из самых важных и часто используемых функций SQL. В базах данных значения дат и времени сохраняются в специальном формате, поэтому невозможно использовать напрямую без дополнительной обработки. Каждая СУБД имеет свой набор функций для обработки дат, что не позволяет переносить их на другие платформы и реализации SQL.

    Список некоторых функций для обработки даты и времени в MS Access:

    Функция Описание
    DatePart() Возвращает часть даты: год, квартал, месяц, неделя, день, час, минуты, секунды
    Year(), Month() Возвращает год и месяц соответственно
    Hour(), Minute(), Second() Возвращает час, минуты и секунды указанной даты
    WeekdayName() Возвращает название дня недели

    Посмотрим на примере как работает функция DatePart():

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    Функция DatePart() имеет дополнительный параметр, который позволяет отобразить необходимую часть даты. В примере мы использовали значение параметра "m", отображающего номер месяца (так же мы можем отразить год - "yyyy", квартал - "q", день - "d", неделю - "w", час - "h" , минуты - "n", секунды - "s" и т.д.).

    4. Статистические функции SQL

    Статистические функции помогают получить готовые данные без их выборки. SQL-запросы с этими функциями часто используются для анализа и создания различных отчетов. Примером таких выборок могут быть: определение количества строк в таблице, получение суммы значений по определенному полю, поиск наибольшего/наименьшего или среднего значения в указанном столбце таблицы. Также отметим, что статистические функции поддерживаются всеми СУБД без каких-либо особых изменений в написании.

    Список статистических функций в СУБД Access:

    Функция Описание
    COUNT() Возвращает число строк в таблице или столбце
    SUM() Возвращает сумму значений в столбце
    MIN() Возвращает наименьшее значение в столбце
    MAX() Возвращает наибольшее значение в столбце
    AVG() Возвращает среднее значение в столбце

    4.1 Примеры использования функции COUNT()

    Возвращает количество всех строк в таблице:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Возвращает количество всех пустых строк в поле Product:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Мы специально удалили одно значение в столбце Product, чтобы показать разницу в работе двух запросов.

    4.2 Примеры использования функции SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Данным запросом мы отразили общее количество проданного товара в апреле.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

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

    4.3 Пример использования функции MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Пример использования функции MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Пример использования функции AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct