Published on

September 22, 2010

Изучение скалярных функций в SQL Server

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: Получает угол в градусах, когда вход указан в радианах
Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.