Поиск…


Вступление

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

Вы используете скалярные функции везде, где выражение допускается в инструкции T-SQL.

Синтаксис

  • CAST (выражение AS data_type [(length)])
  • CONVERT (data_type [(длина)], выражение [, style])
  • PARSE (string_value AS data_type [ИСПОЛЬЗОВАНИЕ культуры])
  • DATENAME (datepart, date)
  • GETDATE ()
  • DATEDIFF (datepart, startdate, enddate)
  • DATEADD (datepart, number, date)
  • ВЫБЕРИТЕ (индекс, val_1, val_2 [, val_n])
  • IIF (boolean_expression, true_value, false_value)
  • SIGN (числовое выражение)
  • POWER (float_expression, y)

замечания

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

Существует десять типов скалярных функций.

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

Значения, возвращаемые функциями даты и времени, зависят от даты и времени, установленных для операционной системы компьютера, на котором запущен экземпляр SQL.

  1. Логическая функция, выполняющая операции с использованием логических операторов. Он оценивает набор условий и возвращает единственный результат.
  2. Математические функции выполняют математические операции или вычисления для числовых выражений. Этот тип функции возвращает одно числовое значение.
  3. Функции метаданных извлекают информацию о указанной базе данных, такую ​​как ее имя и объекты базы данных.
  4. Функции безопасности предоставляют информацию, которую вы можете использовать для управления безопасностью базы данных, например информацию о пользователях и ролях пользователей.
  5. Строковые функции выполняют операции с строковыми значениями и возвращают либо числовые, либо строковые значения.

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

  1. Системные функции выполняют операции и возвращают информацию о значениях, объектах и ​​настройках для текущего экземпляра SQL
  2. Статистические функции системы предоставляют различные статистические данные о текущем экземпляре SQL - например, чтобы вы могли отслеживать текущие уровни производительности системы.

Изменение персонажей

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

Функция lower(char) преобразует заданный параметр символа в нижние символы.

SELECT customer_id, lower(customer_last_name) FROM customer;

вернет фамилию клиента, измененную с «SMITH» на «smith».

Дата и время

В SQL вы используете типы данных даты и времени для хранения информации календаря. Эти типы данных включают время, дату, smalldatetime, datetime, datetime2 и datetimeoffset. Каждый тип данных имеет определенный формат.


Тип данных Формат
время чч: мм: сс [.nnnnnnn]
Дата YYYY-MM-DD
smalldatetime ГГГГ-ММ-ДД чч: мм: сс
Дата и время ГГГГ-ММ-ДД hh: mm: ss [.nnn]
datetime2 ГГГГ-ММ-ДД hh: mm: ss [.nnnnnnn]
DateTimeOffset ГГГГ-ММ-ДД hh: mm: ss [.nnnnnnn] [+/-] hh: mm

Функция DATENAME возвращает имя или значение определенной части даты.

SELECT DATENAME (weekday,'2017-01-14') as Datename
Datename
суббота

Вы используете функцию GETDATE для определения текущей даты и времени компьютера, на котором запущен текущий экземпляр SQL. Эта функция не включает разницу в часовых поясах.

SELECT GETDATE() as Systemdate 
Systemdate
2017-01-14 11: 11: 47.7230728

Функция DATEDIFF возвращает разницу между двумя датами.

В синтаксисе datepart является параметром, который указывает, какую часть даты вы хотите использовать для вычисления разницы. Datepart может быть год, месяц, неделя, день, час, минута, секунда или миллисекунда. Затем вы указываете дату начала в параметре startdate и дату окончания в параметре enddate, для которого вы хотите найти разницу.

SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate) 
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID Время обработки
43659 7
43660 7
43661 7
43662 7

Функция DATEADD позволяет добавить интервал к определенной дате.

SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
Added20MoreDays
2017-02-03 00: 00: 00.000

Конфигурация и функция преобразования

Примером функции конфигурации в SQL является функция @@SERVERNAME . Эта функция предоставляет имя локального сервера, на котором запущен SQL.

SELECT @@SERVERNAME AS 'Server'
сервер
SQL064

В SQL большинство преобразований данных происходит неявно, без вмешательства пользователя.

Чтобы выполнить любые преобразования, которые не могут быть выполнены неявно, вы можете использовать функции CAST или CONVERT .

CAST синтаксис функции проще , чем CONVERT синтаксис функции, но ограничен в том, что он может сделать.

Здесь мы используем функции CAST и CONVERT для преобразования типа данных datetime в тип данных varchar .

Функция CAST всегда использует настройку стиля по умолчанию. Например, он будет представлять даты и время с использованием формата YYYY-MM-DD.

Функция CONVERT использует указанный вами стиль даты и времени. В этом случае 3 задает формат даты dd / mm / yy.

USE AdventureWorks2012
GO
SELECT FirstName + ' ' + LastName + ' was hired on ' +
       CAST(HireDate AS varchar(20)) AS 'Cast',
       FirstName + ' ' + LastName + ' was hired on ' +
       CONVERT(varchar, HireDate, 3) AS 'Convert'
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
GO
В ролях Перерабатывать
Дэвид Хэмилтон был нанят в 2003-02-04 Дэвид Хэмилтон был нанят 04/02/03

Другим примером функции преобразования является функция PARSE . Эта функция преобразует строку в указанный тип данных.

В синтаксисе для функции вы указываете строку, которая должна быть преобразована, ключевое слово AS , а затем требуемый тип данных. При желании вы также можете указать культуру, в которой строковое значение должно быть отформатировано. Если вы не указали это, используется язык для сеанса.

Если строковое значение не может быть преобразовано в числовой, дату или формат времени, это приведет к ошибке. Затем вам понадобится использовать CAST или CONVERT для преобразования.

SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
Дата на английском языке
2012-08-13 00: 00: 00.0000000

Логическая и математическая функция

SQL имеет две логические функции: CHOOSE и IIF .

Функция CHOOSE возвращает элемент из списка значений на основе его позиции в списке. Эта позиция указана индексом.

В синтаксисе параметр index указывает элемент и представляет собой целое число или целое число. Параметр val_1 ... val_n идентифицирует список значений.

SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
Результат
Продажи

В этом примере вы используете функцию CHOOSE для возврата второй записи в список отделов.


Функция IIF возвращает одно из двух значений, основанное на определенном условии. Если условие истинно, оно вернет истинное значение. В противном случае он вернет ложное значение.

В синтаксисе параметр boolean_expression указывает логическое выражение. Параметр true_value указывает значение, которое должно быть возвращено, если выражение boolean_expression равно true, а параметр false_value указывает значение, которое должно быть возвращено, если выражение boolean_expression равно false.

SELECT BusinessEntityID, SalesYTD, 
       IIF(SalesYTD > 200000, 'Bonus', 'No Bonus') AS 'Bonus?'
FROM Sales.SalesPerson
GO
BusinessEntityID SalesYTD Бонус?
274 559697.5639 бонус
275 3763178.1787 бонус
285 172524.4512 Нет бонусов

В этом примере вы используете функцию IIF для возврата одного из двух значений. Если продажи года продажи продавцом превышают 200 000, это лицо будет иметь право на получение бонуса. Значения ниже 200 000 означают, что сотрудники не имеют права на получение бонусов.


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


Одним из примеров является функция SIGN , которая возвращает значение, указывающее знак выражения. Значение -1 указывает отрицательное выражение, значение +1 указывает на положительное выражение, а 0 указывает на нуль.

SELECT SIGN(-20) AS 'Sign'
Знак
-1

В этом примере вход представляет собой отрицательное число, поэтому на панели «Результаты» отображается результат -1.


Еще одна математическая функция - функция POWER . Эта функция обеспечивает значение выражения, поднятого до указанной мощности.

В синтаксисе параметр float_expression указывает выражение, а параметр y указывает мощность, к которой вы хотите поднять выражение.

SELECT POWER(50, 3) AS Result
Результат
125000


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow