Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Функции манипулирования данными

Что такое функция

     Как и в большинстве других языков программирования, в SQL поддерживается использование функций для манипулирования данными. Функции — это операции, которые обычно производятся над данными, чаще всего для облегчения преобразований и манипулирования. 

     Примером может служить функция RTRIM (), которую мы использовали в предыдущем разделе для удаления пробелов в конце строки.

Проблемы с функциями

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

Функция Синтаксис
Выборка части строки  В Access используется функция MID (). В DB2, Oracle и PostgreSQL используется функция SUBSTR() . В MySQL, SQL Server и Sybase — SUBSTRING()
Преобразование типа данных  В Access и Oracle используются несколько функций, по одной на каждый тип преобразования. В DB2 и
PostgreSQL используется функция CAST () . В MySQL, SQL Server и Sybase используется функция CONVERT ().
Получение текущей даты  В Access используется функция NOW (). В DB2 и PostgreSQL — CURRENT_DATE.
В MySQL используется функция CURDATE () . В Oracle — SYSDATE. В SQL Server и Sybase — GETDATE ()

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

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

Стоит ли использовать функции?

Итак, вы пытаетесь решить, использовать функции или нет. Это решение зависит от вас, и здесь нет правильного или неправильного выбора. Если вы решили использовать функции, дописывайте подробные комментарии к коду, чтобы в будущем вы (или другой разработчик) могли узнать, для какой реализации SQL писался данный код.