Функции манипулирования данными
- Что такое функция
- Использование функций
- Функции манипулирования текстом
- Функции манипулирования датой и временем
- Функции для манипулирования числами
Что такое функция
Как и в большинстве других языков программирования, в 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-программисты стараются не использовать зависящие от реализации функции. Несмотря на то что это довольно благородная и в чем-то идеальная позиция, она не всегда вписывается в интересы приложения с точки зрения производительности. Ему приходится использовать другие методы выполнения того, что СУБД сделала бы более эффективно.



