SQL Server предоставляет широкий спектр функций, которые могут быть использованы разработчиками баз данных для улучшения реализации их приложений. В этой статье мы сосредоточимся на скалярных функциях, которые являются встроенными функциями, работающими с одним значением и возвращающими одно значение. Эти функции чрезвычайно полезны и могут использоваться в различных сценариях, где допустимо использование выражения.
Типы скалярных функций
Скалярные функции в SQL Server могут быть классифицированы по разным типам в зависимости от их назначения. Некоторые из общих типов включают:
- Функции конфигурации
- Криптографические функции
- Функции курсора
- Функции типов данных
- Функции типов данных даты и времени
- Математические функции
- Функции метаданных
- Функции ODBC скаляра
- Функции репликации
- Функции безопасности
- Строковые функции
- Системные функции
- Системные статистические функции
- Текстовые и изображенческие функции
- Функции триггера
Каждый тип скалярной функции служит определенной цели и может использоваться для выполнения различных операций в SQL-запросах.
Функции конфигурации
Функции конфигурации в SQL Server предоставляют информацию о текущей конфигурации. Эти функции являются недетерминированными, что означает, что их возвращаемое значение может изменяться во время выполнения запроса. Некоторые примеры функций конфигурации:
- @@DATEFIRST: Возвращает первый день недели
- @@OPTIONS: Возвращает текущие установки SET для сеанса
- @@DBTS: Возвращает последнее использованное значение временной метки базы данных
- @@REMSERVER: Устарело (возвращает имя SQL-сервера)
- @@LANGID: Возвращает идентификатор языка, используемого
- @@SERVERNAME: Возвращает имя локального сервера
- @@LANGUAGE: Возвращает имя используемого языка
- @@SERVICENAME: Возвращает имя ключа реестра, под которым работает экземпляр SQL-сервера
- @@LOCK_TIMEOUT: Возвращает значение времени ожидания блокировки в миллисекундах для текущего сеанса
- @@SPID: Возвращает идентификатор сеанса для текущего пользовательского процесса
- @@MAX_CONNECTIONS: Возвращает максимальное количество одновременных пользовательских подключений
- @@TEXTSIZE: Возвращает текущее значение опции TEXTSIZE
- @@MAX_PRECISION: Возвращает значение точности, используемое в десятичных и числовых типах данных
- @@VERSION: Возвращает версию, процессор, дату сборки и операционную систему установленного SQL-сервера
- @@NESTLEVEL: Возвращает уровень вложенности текущего выполнения хранимой процедуры на локальном сервере
Криптографические функции
Криптографические функции в SQL Server используются для поддержки шифрования, дешифрования, цифровой подписи и их проверки. Эти функции играют важную роль в обеспечении безопасности конфиденциальных данных в базе данных. Некоторые примеры криптографических функций:
- EncryptByKey: Для шифрования данных с использованием симметричного ключа
- DecryptByKey: Для дешифрования данных с использованием симметричного ключа
- EncryptByPassPhrase: Для шифрования данных с помощью фразы-пароля
- DecryptByPassPhrase: Для дешифрования данных, которые были зашифрованы с помощью фразы-пароля
- Key_ID: Для получения идентификатора симметричного ключа базы данных
- Key_GUID: Для получения GUID симметричного ключа базы данных
- EncryptByAsmKey: Для шифрования данных с использованием асимметричного ключа
- DecryptByAsmKey: Для дешифрования данных с использованием асимметричного ключа
- EncryptByCert: Для шифрования данных с использованием открытого ключа сертификата
- DecryptByCert: Для дешифрования данных с использованием закрытого ключа сертификата
- Cert_ID: Для получения идентификатора сертификата
- AsymKey_ID: Для получения идентификатора асимметричного ключа
- CertProperty: Для получения значения определенного свойства сертификата
- SignByAsymKey: Для подписи открытого текста с использованием асимметричного ключа
- VerifySignedByAsymKey: Для проверки целостности цифрово подписанных данных
- SignByCert: Для подписи текста с использованием сертификата и возврата подписи
- VerifySignedByCert: Для проверки целостности цифрово подписанных данных с использованием сертификата для подписи
- DecryptByKeyAutoCert: Для дешифрования с использованием симметричного ключа, автоматически дешифрованного с использованием сертификата
Функции курсора
Функции курсора в SQL Server возвращают информацию о курсорах и являются недетерминированными. Курсоры используются для извлечения и манипулирования данных строка за строкой, и эти функции предоставляют ценную информацию о их состоянии. Некоторые примеры функций курсора:
- @@CURSOR_ROWS: Возвращает количество строк в последнем открытом курсоре в соединении SQL
- CURSOR_STATUS: Определяет, возвращалась ли хранимая процедура курсор или нет
- @@FETCH_STATUS: Получает статус последнего оператора FETCH курсора
Функции типов данных
Функции типов данных в SQL Server возвращают данные о значениях идентификаторов и других типов данных. Эти функции являются недетерминированными и могут использоваться для получения конкретной информации о типах данных. Некоторые примеры функций типов данных:
- DATALENGTH: Получает количество байтов выражения
- IDENT_SEED: Получает исходное значение семени, используемое для столбца идентификатора
- IDENT_CURRENT: Получает последнее сгенерированное значение семени для столбца идентификатора в таблице или представлении
- IDENT_INCR: Получает значение приращения, указанное для столбца идентификатора в таблице или представлении
- SQL_VARIANT_PROPERTY: Получает базовый тип данных о значении sql_variant
Функции данных даты и времени
Функции данных даты и времени в SQL Server используются для выполнения вычислений на входных значениях даты и времени. Эти функции являются недетерминированными и могут использоваться для извлечения определенных частей даты или вычисления разницы во времени. Некоторые примеры функций данных даты и времени:
- SYSDATETIME: Получает системное время в виде значения datetime2(7)
- SYSDATETIMEOFFSET: То же самое, что и выше, с учетом смещения часового пояса
- SYSUTCDATETIME: То же самое, что и выше, с временем, возвращаемым в виде времени UTC
- CURRENT_TIMESTAMP: Получает текущее время в виде datetime2(7)
- GETDATE: Получает дату в виде datetime2(7)
- GETUTCDATE: Получает дату в виде datetime2(7) с временем в виде времени UTC
- DATENAME: Получает строковое представление указанной части даты заданной даты
- DATEPART: Получает целое число указанной части даты заданной даты
- DAY: Получает дневную часть заданной даты в виде целого числа
- MONTH: Получает месячную часть заданной даты в виде целого числа
- YEAR: Получает годовую часть заданной даты в виде целого числа
- DATEDIFF: Получает разницу во времени между двумя датами в виде частей даты
- DATEADD: Получает новую дату, добавляя часть даты к дате
- SET DATEFIRST: Устанавливает первый день недели
- ISDATE: Проверяет, является ли выражение допустимой датой или нет
Математические функции
Математические функции в SQL Server используются для выполнения математических вычислений на входных значениях. Эти функции являются детерминированными, что означает, что их возвращаемое значение всегда одинаково для заданного входа. Некоторые примеры математических функций:
- ABS: Возвращает абсолютное значение указанного выражения
- ACOS: Возвращает угол, косинус которого является выражением
- ASIN: Возвращает угол, синус которого является выражением
- ATAN: Возвращает угол, тангенс которого является выражением
- ATN2: Получает угол между двумя указанными точками
- CEILING: Получает наименьшее целое число, большее указанного выражения
- COS: Получает значение косинуса заданного угла
- COT: Получает значение котангенса заданного угла
- DEGREES: Получает угол в градусах, когда вход указан в радианах