SQL
Функции (Scalar / Single Row)
Поиск…
Вступление
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)
замечания
Скалярные или однорядные функции используются для управления каждой строкой данных в результирующем наборе, в отличие от агрегатных функций, которые работают со всем набором результатов.
Существует десять типов скалярных функций.
- Функции конфигурации предоставляют информацию о конфигурации текущего экземпляра SQL.
- Функции преобразования преобразуют данные в правильный тип данных для данной операции. Например, эти типы функций могут переформатировать информацию путем преобразования строки в дату или число, чтобы можно было сравнить два разных типа.
- Функции даты и времени управляют полями, содержащими значения даты и времени. Они могут возвращать числовые, даты или строковые значения. Например, вы можете использовать функцию для извлечения текущего дня недели или года или для получения только года с даты.
Значения, возвращаемые функциями даты и времени, зависят от даты и времени, установленных для операционной системы компьютера, на котором запущен экземпляр SQL.
- Логическая функция, выполняющая операции с использованием логических операторов. Он оценивает набор условий и возвращает единственный результат.
- Математические функции выполняют математические операции или вычисления для числовых выражений. Этот тип функции возвращает одно числовое значение.
- Функции метаданных извлекают информацию о указанной базе данных, такую как ее имя и объекты базы данных.
- Функции безопасности предоставляют информацию, которую вы можете использовать для управления безопасностью базы данных, например информацию о пользователях и ролях пользователей.
- Строковые функции выполняют операции с строковыми значениями и возвращают либо числовые, либо строковые значения.
Используя строковые функции, вы можете, например, комбинировать данные, извлекать подстроку, сравнивать строки или преобразовывать строку ко всем строчным или строчным символам.
- Системные функции выполняют операции и возвращают информацию о значениях, объектах и настройках для текущего экземпляра SQL
- Статистические функции системы предоставляют различные статистические данные о текущем экземпляре 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 |