Szukaj…


Wprowadzenie

SQL zapewnia kilka wbudowanych funkcji skalarnych. Każda funkcja skalarna przyjmuje jedną wartość jako dane wejściowe i zwraca jedną wartość jako dane wyjściowe dla każdego wiersza w zestawie wyników.

Funkcji skalarnych używasz wszędzie tam, gdzie wyrażenie jest dozwolone w instrukcji T-SQL.

Składnia

  • CAST (wyrażenie AS data_type [(długość)])
  • CONVERT (typ_danych [(długość)], wyrażenie [, styl])
  • PARSE (wartość_łańcuchowa AS typ_danych [UŻYWANIE kultury])
  • DATENAME (datepart, date)
  • GETDATE ()
  • DATA.RÓŻNICA (datepart, dated, enddate)
  • DATA DODAJ (data, numer, data)
  • WYBIERZ (indeks, val_1, val_2 [, val_n])
  • IIF (wyrażenie boolowskie, wartość true, wartość false)
  • ZNAK (wyrażenie numeryczne)
  • MOC (wyrażenie_przestawne, y)

Uwagi

Funkcje skalarne lub jednorzędowe służą do obsługi każdego wiersza danych w zestawie wyników, w przeciwieństwie do funkcji agregujących, które działają na całym zestawie wyników.

Istnieje dziesięć rodzajów funkcji skalarnych.

  1. Funkcje konfiguracyjne dostarczają informacji o konfiguracji bieżącej instancji SQL.
  2. Funkcje konwersji konwertują dane na poprawny typ danych dla danej operacji. Na przykład tego rodzaju funkcje mogą ponownie formatować informacje, przekształcając ciąg znaków na datę lub liczbę, aby umożliwić porównanie dwóch różnych typów.
  3. Funkcje daty i godziny manipulują polami zawierającymi wartości daty i godziny. Mogą zwracać wartości liczbowe, daty lub ciągi znaków. Na przykład możesz użyć funkcji, aby pobrać bieżący dzień tygodnia lub roku lub tylko rok od daty.

Wartości zwracane przez funkcje daty i godziny zależą od daty i godziny ustawionej dla systemu operacyjnego komputera z uruchomioną instancją SQL.

  1. Funkcja logiczna, która wykonuje operacje za pomocą operatorów logicznych. Ocenia zestaw warunków i zwraca pojedynczy wynik.
  2. Funkcje matematyczne wykonują operacje matematyczne lub obliczenia na wyrażeniach numerycznych. Ten typ funkcji zwraca pojedynczą wartość liczbową.
  3. Funkcje metadanych pobierają informacje o określonej bazie danych, takie jak jej nazwa i obiekty bazy danych.
  4. Funkcje bezpieczeństwa dostarczają informacji, których można użyć do zarządzania bezpieczeństwem bazy danych, takich jak informacje o użytkownikach i rolach bazy danych.
  5. Funkcje łańcuchowe wykonują operacje na wartościach łańcuchowych i zwracają wartości liczbowe lub łańcuchowe.

Korzystając z funkcji ciągów, możesz na przykład łączyć dane, wyodrębniać podłańcuch, porównywać ciągi lub konwertować ciąg na wszystkie wielkie i małe litery.

  1. Funkcje systemowe wykonują operacje i zwracają informacje o wartościach, obiektach i ustawieniach dla bieżącej instancji SQL
  2. Funkcje statystyczne systemu zapewniają różne statystyki dotyczące bieżącej instancji SQL - na przykład, abyś mógł monitorować bieżące poziomy wydajności systemu.

Modyfikacje postaci

Funkcje modyfikujące znaki obejmują konwersję znaków na wielkie lub małe litery, konwertowanie liczb na liczby sformatowane, wykonywanie manipulacji znakami itp.

Funkcja lower(char) konwertuje podany parametr znakowy na małe litery.

SELECT customer_id, lower(customer_last_name) FROM customer;

zwróci nazwisko klienta zmienione z „SMITH” na „Smith”.

Data i godzina

W języku SQL typy danych daty i godziny są używane do przechowywania informacji kalendarza. Te typy danych obejmują godzinę, datę, smalldatetime, datetime, datetime2 i datetimeoffset. Każdy typ danych ma określony format.


Typ danych Format
czas hh: mm: ss [.nnnnnnn]
data RRRR-MM-DD
smalldatetime RRRR-MM-DD gg: mm: ss
datetime RRRR-MM-DD gg: mm: ss [.nnn]
datetime2 RRRR-MM-DD gg: mm: ss [.nnnnnnn]
datetimeoffset RRRR-MM-DD gg: mm: ss [.nnnnnnn] [+/-] gg: mm

Funkcja DATENAME zwraca nazwę lub wartość określonej części daty.

SELECT DATENAME (weekday,'2017-01-14') as Datename
Nazwa
sobota

Za pomocą funkcji GETDATE można określić bieżącą datę i godzinę komputera z bieżącą instancją SQL. Ta funkcja nie obejmuje różnicy stref czasowych.

SELECT GETDATE() as Systemdate 
Data systemowa
14.01.2017 11: 11: 47.7230728

Funkcja DATEDIFF zwraca różnicę między dwiema datami.

W składni datepart jest parametrem określającym, która część daty ma zostać użyta do obliczenia różnicy. Datą może być rok, miesiąc, tydzień, dzień, godzina, minuta, sekunda lub milisekunda. Następnie określ datę początkową w parametrze data początkowa i datę końcową w parametrze data końcowa, dla której chcesz znaleźć różnicę.

SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate) 
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID Czas przetwarzania
43659 7
43660 7
43661 7
43662 7

Funkcja DATEADD umożliwia dodanie interwału do części określonej daty.

SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
Dodano 20 Więcej dni
2017-02-03 00: 00: 00.000

Konfiguracja i funkcja konwersji

Przykładem funkcji konfiguracyjnej w SQL jest funkcja @@SERVERNAME . Ta funkcja podaje nazwę lokalnego serwera, na którym działa SQL.

SELECT @@SERVERNAME AS 'Server'
serwer
SQL064

W SQL większość konwersji danych zachodzi niejawnie, bez interwencji użytkownika.

Aby wykonać konwersje, których nie można wykonać niejawnie, można użyć funkcji CAST lub CONVERT .

Składnia funkcji CAST jest prostsza niż składnia funkcji CONVERT , ale jej możliwości są ograniczone.

W tym przypadku używamy zarówno funkcji CAST i CONVERT do konwersji typu danych datetime na typ danych varchar .

Funkcja CAST zawsze używa domyślnego ustawienia stylu. Na przykład będzie reprezentować daty i godziny w formacie RRRR-MM-DD.

Funkcja CONVERT wykorzystuje określony styl daty i godziny. W takim przypadku 3 określa format daty dd / mm / rr.

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
Odlew Konwertować
David Hamiltion został zatrudniony w dniu 2003-02-04 David Hamiltion został zatrudniony 04/02/03

Innym przykładem funkcji konwersji jest funkcja PARSE . Ta funkcja przekształca ciąg znaków na określony typ danych.

W składni funkcji określa się ciąg, który należy przekonwertować, słowo kluczowe AS , a następnie wymagany typ danych. Opcjonalnie możesz również określić kulturę, w której należy sformatować wartość ciągu. Jeśli nie określisz tego, zostanie użyty język sesji.

Jeśli wartości ciągu nie można przekonwertować na format numeryczny, datę lub godzinę, spowoduje to błąd. Następnie musisz użyć CAST lub CONVERT do konwersji.

SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
Data w języku angielskim
2012-08-13 00: 00: 00.0000000

Funkcja logiczna i matematyczna

SQL ma dwie funkcje logiczne - CHOOSE i IIF .

Funkcja CHOOSE zwraca element z listy wartości na podstawie jego pozycji na liście. Ta pozycja jest określona przez indeks.

W składni parametr indeksu określa element i jest liczbą całkowitą lub liczbą całkowitą. Parametr val_1… val_n określa listę wartości.

SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
Wynik
Obroty

W tym przykładzie użyto funkcji CHOOSE aby zwrócić drugi wpis na liście działów.


Funkcja IIF zwraca jedną z dwóch wartości na podstawie określonego warunku. Jeśli warunek jest spełniony, zwróci wartość true. W przeciwnym razie zwróci fałszywą wartość.

W składni parametr boolean_expression określa wyrażenie boolowskie. Parametr true_value określa wartość, która powinna zostać zwrócona, jeśli wyrażenie boolean ma wartość true, a parametr false_value określa wartość, która powinna zostać zwrócona, jeśli wyrażenie boolean ma wartość false.

SELECT BusinessEntityID, SalesYTD, 
       IIF(SalesYTD > 200000, 'Bonus', 'No Bonus') AS 'Bonus?'
FROM Sales.SalesPerson
GO
BusinessEntityID SalesYTD Premia?
274 559697.5639 Premia
275 3763178.1787 Premia
285 172524.4512 Bez premii

W tym przykładzie użyto funkcji IIF, aby zwrócić jedną z dwóch wartości. Jeśli roczna sprzedaż sprzedawcy przekroczy 200 000, osoba ta będzie uprawniona do premii. Wartości poniżej 200 000 oznaczają, że pracownicy nie kwalifikują się do premii.


SQL zawiera kilka funkcji matematycznych, których można użyć do wykonywania obliczeń na wartościach wejściowych i zwracania wyników liczbowych.


Jednym z przykładów jest funkcja SIGN , która zwraca wartość wskazującą znak wyrażenia. Wartość -1 oznacza wyrażenie ujemne, wartość +1 oznacza wyrażenie pozytywne, a 0 oznacza zero.

SELECT SIGN(-20) AS 'Sign'
Znak
-1

W tym przykładzie dane wejściowe są liczbą ujemną, więc w panelu Wyniki znajduje się wynik -1.


Inną funkcją matematyczną jest funkcja POWER . Ta funkcja zapewnia wartość wyrażenia podniesionego do określonej potęgi.

W składni parametr float_expression określa wyrażenie, a parametr y określa moc, do której chcesz podnieść wyrażenie.

SELECT POWER(50, 3) AS Result
Wynik
125000


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow