Sök…


Introduktion

SQL har flera inbyggda skalfunktioner. Varje skalfunktion tar ett värde som ingång och returnerar ett värde som utgång för varje rad i en resultatuppsättning.

Du använder skalfunktioner överallt där ett uttryck är tillåtet i en T-SQL-sats.

Syntax

  • CAST (uttryck AS data_type [(längd)])
  • CONVERT (data_type [(längd)], uttryck [, stil])
  • PARSE (string_value AS data_type [USING culture])
  • DATENAME (datumdel, datum)
  • GETDATE ()
  • DATEDIFF (datumdel, startdatum, slutdatum)
  • DATEADD (datumdel, nummer, datum)
  • VÄLJ (index, val_1, val_2 [, val_n])
  • IIF (boolean_ expression, true_value, false_value)
  • SIGN (numerisk_uttryck)
  • POWER (float_ expression, y)

Anmärkningar

Scalar- eller enkelradsfunktioner används för att manövrera varje rad med data i resultatuppsättningen, till skillnad från aggregerade funktioner som fungerar på hela resultatuppsättningen.

Det finns tio typer av skalfunktioner.

  1. Konfigurationsfunktioner ger information om konfigurationen av den aktuella SQL-instansen.
  2. Konverteringsfunktioner konverterar data till rätt datatyp för en given operation. Till exempel kan dessa typer av funktioner formatera information genom att konvertera en sträng till ett datum eller ett nummer för att tillåta två olika typer att jämföra.
  3. Datum- och tidsfunktioner manipulerar fält som innehåller datum- och tidsvärden. De kan returnera numeriska, datum- eller strängvärden. Du kan till exempel använda en funktion för att hämta aktuell dag i veckan eller året eller för att bara hämta året från datumet.

Värdena som returneras av datum- och tidsfunktioner beror på det datum och den tid som ställts in för operativsystemet för datorn som kör SQL-instansen.

  1. Logisk funktion som utför operationer med logiska operatörer. Den utvärderar en uppsättning villkor och returnerar ett enda resultat.
  2. Matematiska funktioner utför matematiska operationer eller beräkningar på numeriska uttryck. Denna typ av funktion returnerar ett enda numeriskt värde.
  3. Metadata-funktioner hämtar information om en specificerad databas, till exempel dess namn och databasobjekt.
  4. Säkerhetsfunktioner ger information som du kan använda för att hantera säkerheten för en databas, till exempel information om databasanvändare och roller.
  5. Strängfunktioner utför operationer på strängvärden och returnerar antingen numeriska eller strängvärden.

Med hjälp av strängfunktioner kan du till exempel kombinera data, extrahera en substring, jämföra strängar eller konvertera en sträng till alla stora och små bokstäver.

  1. Systemfunktioner utför operationer och returnerar information om värden, objekt och inställningar för den aktuella SQL-instansen
  2. Systemstatistiska funktioner tillhandahåller olika statistik om den aktuella SQL-instansen - till exempel så att du kan övervaka systemets nuvarande prestandanivåer.

Teckenändringar

Teckenändringsfunktioner inkluderar konvertering av tecken till stora och små bokstäver, konvertering av siffror till formaterade siffror, utför teckenmanipulation, etc.

Den lower(char) -funktionen konverterar den givna karaktärsparametern till lägre tecken.

SELECT customer_id, lower(customer_last_name) FROM customer;

skulle returnera kundens efternamn ändrat från "SMITH" till "smith".

Datum och tid

I SQL använder du datum- och tiddatatyper för att lagra kalenderinformation. Dessa datatyper inkluderar tid, datum, litendatid, datetime, datetime2 och datetimeoffset. Varje datatyp har ett specifikt format.


Data typ Formatera
tid hh: mm: ss [.nnnnnnn]
datum ÅÅÅÅ-MM-DD
smalldatetime ÅÅÅÅ-MM-DD hh: mm: ss
datum Tid ÅÅÅÅ-MM-DD hh: mm: ss [.nnn]
datetime2 ÅÅÅÅ-MM-DD hh: mm: ss [.nnnnnnn]
datetimeoffset ÅÅÅÅ-MM-DD hh: mm: ss [.nnnnnnn] [+/-] hh: mm

Funktionen DATENAME returnerar namnet eller värdet på en viss del av datumet.

SELECT DATENAME (weekday,'2017-01-14') as Datename
Datename
lördag

Du använder GETDATE funktionen för att bestämma aktuellt datum och tid för datorn som kör den aktuella SQL-instansen. Denna funktion inkluderar inte tidszonskillnaden.

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

Funktionen DATEDIFF returnerar skillnaden mellan två datum.

I syntaxen är datepart parametern som anger vilken del av datumet du vill använda för att beräkna skillnaden. Datumdelen kan vara år, månad, vecka, dag, timme, minut, sekund eller millisekund. Du anger sedan startdatum i startdatumsparametern och slutdatumet i slutdatumsparametern som du vill hitta skillnaden för.

SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate) 
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID Behandlingstid
43.659 7
43660 7
43.661 7
43662 7

Med DATEADD funktionen kan du lägga till ett intervall till en del av ett specifikt datum.

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

Konfigurations- och konverteringsfunktion

Ett exempel på en konfigurationsfunktion i SQL är @@SERVERNAME funktionen. Den här funktionen ger namnet på den lokala servern som kör SQL.

SELECT @@SERVERNAME AS 'Server'
server
SQL064

I SQL inträffar de flesta datakonverteringar implicit utan några användarinsatser.

För att utföra omvandlingar som inte kan genomföras underförstått kan du använda CAST eller CONVERT funktionerna.

Syntaxen för CAST funktionen är enklare än CONVERT funktionen, men är begränsad vad den kan göra.

CONVERT använder vi både CAST och CONVERT funktionerna för att konvertera datetime-datatypen till varchar .

CAST funktionen använder alltid standardstilinställningen. Till exempel kommer det att representera datum och tider med formatet YYYY-MM-DD.

CONVERT funktionen använder CONVERT du anger. I detta fall anger 3 datumformatet dd / mm / ååå.

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
Kasta Konvertera
David Hamiltion anställdes 2003-02-04 David Hamiltion anställdes den 04/02/03

Ett annat exempel på en konverteringsfunktion är PARSE funktionen. Denna funktion konverterar en sträng till en specificerad datatyp.

I syntaxen för funktionen anger du strängen som måste konverteras, AS nyckelordet och sedan önskad datatyp. Valfritt kan du också ange den kultur där strängvärdet ska formateras. Om du inte anger detta används språket för sessionen.

Om strängvärdet inte kan konverteras till ett numeriskt, datum- eller tidsformat kommer det att resultera i ett fel. Du måste då använda CAST eller CONVERT för konverteringen.

SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
Datum på engelska
2012-08-13 00: 00: 00.0000000

Logisk och matematisk funktion

SQL har två logiska funktioner - CHOOSE och IIF .

Funktionen CHOOSE returnerar ett objekt från en lista med värden, baserat på dess position i listan. Denna position specificeras av indexet.

I syntaxen anger indexparametern objektet och är ett heltal eller heltal. Parametern val_1 ... val_n identifierar listan med värden.

SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
Resultat
försäljning

I det här exemplet använder du CHOOSE funktionen för att returnera den andra posten i en lista över avdelningar.


IIF funktionen returnerar ett av två värden, baserat på ett visst villkor. Om villkoret är sant kommer det att returnera verkligt värde. Annars kommer det att returnera ett falskt värde.

I syntaxen anger parametern boolean_xpressions det booleska uttrycket. Parametern true_value anger värdet som ska returneras om boolean_expression utvärderas till true och parametern false_value anger värdet som ska returneras om boolean_xpressions utvärderas till falskt.

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

I det här exemplet använder du IIF-funktionen för att returnera ett av två värden. Om en säljares årliga försäljning är över 200 000 kommer denna person att få en bonus. Värden under 200 000 innebär att anställda inte kvalificerar sig för bonusar.


SQL innehåller flera matematiska funktioner som du kan använda för att utföra beräkningar på ingångsvärden och returnera numeriska resultat.


Ett exempel är SIGN funktionen, som returnerar ett värde som indikerar ett uttrycks tecken. Värdet -1 indikerar ett negativt uttryck, värdet på +1 indikerar ett positivt uttryck och 0 indikerar noll.

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

I exemplet är ingången ett negativt tal, så resultatfönstret visar resultatet -1.


En annan matematisk funktion är POWER funktionen. Denna funktion tillhandahåller värdet på ett uttryck höjt till en specificerad effekt.

I syntaxen anger parametern float_xpressions uttrycket, och y-parametern anger kraften som du vill höja uttrycket till.

SELECT POWER(50, 3) AS Result
Resultat
125 tusen


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow