SQL
Funktioner (Scalar / Enkel rad)
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.
- Konfigurationsfunktioner ger information om konfigurationen av den aktuella SQL-instansen.
- 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.
- 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.
- Logisk funktion som utför operationer med logiska operatörer. Den utvärderar en uppsättning villkor och returnerar ett enda resultat.
- Matematiska funktioner utför matematiska operationer eller beräkningar på numeriska uttryck. Denna typ av funktion returnerar ett enda numeriskt värde.
- Metadata-funktioner hämtar information om en specificerad databas, till exempel dess namn och databasobjekt.
- 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.
- 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.
- Systemfunktioner utför operationer och returnerar information om värden, objekt och inställningar för den aktuella SQL-instansen
- 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 |