SQL
Functies (Scalair / Enkele rij)
Zoeken…
Invoering
SQL biedt verschillende ingebouwde scalaire functies. Elke scalaire functie neemt één waarde als invoer en retourneert één waarde als uitvoer voor elke rij in een resultatenset.
U gebruikt scalaire functies overal waar een expressie is toegestaan binnen een T-SQL-instructie.
Syntaxis
- CAST (expressie AS data_type [(lengte)])
- CONVERT (data_type [(lengte)], expressie [, stijl])
- PARSE (string_waarde AS data_type [cultuur GEBRUIKEN])
- DATENAME (gegevensdeel, datum)
- KRIJG DATUM ( )
- DATEDIFF (gegevensdeel, startdatum, einddatum)
- DATEADD (gegevensdeel, nummer, datum)
- KIES (index, val_1, val_2 [, val_n])
- IIF (boolean_expression, true_value, false_value)
- SIGN (numerieke_expressie)
- POWER (float_expression, y)
Opmerkingen
Scalaire of Single-Row-functies worden gebruikt om elke rij met gegevens in de resultatenset te bedienen, in tegenstelling tot geaggregeerde functies die op de gehele resultatenset werken.
Er zijn tien soorten scalaire functies.
- Configuratiefuncties geven informatie over de configuratie van het huidige SQL-exemplaar.
- Conversiefuncties zetten gegevens om in het juiste gegevenstype voor een bepaalde bewerking. Dit soort functies kan bijvoorbeeld informatie opnieuw formatteren door een tekenreeks te converteren naar een datum of nummer zodat twee verschillende typen kunnen worden vergeleken.
- Datum- en tijdfuncties manipuleren velden die datum- en tijdwaarden bevatten. Ze kunnen numerieke, datum- of tekenreekswaarden retourneren. U kunt bijvoorbeeld een functie gebruiken om de huidige dag van de week of het jaar of alleen het jaar vanaf de datum op te halen.
De waarden geretourneerd door datum- en tijdfuncties zijn afhankelijk van de datum en tijd die zijn ingesteld voor het besturingssysteem van de computer waarop het SQL-exemplaar wordt uitgevoerd.
- Logische functie die bewerkingen uitvoert met logische operatoren. Het evalueert een reeks voorwaarden en retourneert een enkel resultaat.
- Wiskundige functies voeren wiskundige bewerkingen of berekeningen uit op numerieke uitdrukkingen. Dit type functie retourneert een enkele numerieke waarde.
- Metadatafuncties halen informatie over een opgegeven database op, zoals de naam en databaseobjecten.
- Beveiligingsfuncties bieden informatie die u kunt gebruiken om de beveiliging van een database te beheren, zoals informatie over databasegebruikers en rollen.
- Stringfuncties voeren bewerkingen uit op stringwaarden en retourneren numerieke of stringwaarden.
Met tekenreeksfuncties kunt u bijvoorbeeld gegevens combineren, een substring extraheren, tekenreeksen vergelijken of een tekenreeks omzetten in hoofdletters of kleine letters.
- Systeemfuncties voeren bewerkingen uit en retourneren informatie over waarden, objecten en instellingen voor het huidige SQL-exemplaar
- Statistische systeemfuncties bieden verschillende statistieken over de huidige SQL-instantie, bijvoorbeeld zodat u de huidige prestatieniveaus van het systeem kunt volgen.
Karakterwijzigingen
Karakter-modificerende functies omvatten het omzetten van tekens in hoofdletters of kleine letters, het omzetten van cijfers in opgemaakte cijfers, het uitvoeren van tekenmanipulatie, enz.
De functie lower(char)
converteert de gegeven tekenparameter naar tekens met een kleine letter.
SELECT customer_id, lower(customer_last_name) FROM customer;
zou de achternaam van de klant teruggeven, gewijzigd van "SMITH" in "smith".
Datum en tijd
In SQL gebruikt u gegevenstypes voor datum en tijd om kalenderinformatie op te slaan. Deze gegevenstypen omvatten de tijd, datum, kleine datumtijd, datumtijd, datumtijd2 en datumtijdoffset. Elk gegevenstype heeft een specifiek formaat.
Data type | Formaat |
---|---|
tijd | hh: mm: ss [.nnnnnnn] |
datum | YYYY-MM-DD |
smalldatetime | JJJJ-MM-DD uu: mm: ss |
datum Tijd | JJJJ-MM-DD uu: mm: ss [.nnn] |
datetime2 | JJJJ-MM-DD uu: mm: ss [.nnnnnnn] |
DateTimeOffset | JJJJ-MM-DD uu: mm: ss [.nnnnnnn] [+/-] uu: mm |
De functie DATENAME
retourneert de naam of waarde van een specifiek deel van de datum.
SELECT DATENAME (weekday,'2017-01-14') as Datename
Datename |
---|
zaterdag |
U gebruikt de functie GETDATE
om de huidige datum en tijd te bepalen van de computer waarop het huidige SQL-exemplaar wordt uitgevoerd. Deze functie omvat het tijdzoneverschil niet.
SELECT GETDATE() as Systemdate
Systeem datum |
---|
2017-01-14 11: 11: 47.7230728 |
De functie DATEDIFF
retourneert het verschil tussen twee datums.
In de syntaxis is datepart de parameter die aangeeft welk deel van de datum u wilt gebruiken om het verschil te berekenen. Het gegevensdeel kan jaar, maand, week, dag, uur, minuut, seconde of milliseconde zijn. Vervolgens geeft u de begindatum op in de parameter startdatum en de einddatum in de parameter einddatum waarvoor u het verschil wilt vinden.
SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate)
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID | Verwerkingstijd |
---|---|
43659 | 7 |
43660 | 7 |
43661 | 7 |
43662 | 7 |
Met de functie DATEADD
kunt u een interval toevoegen aan een deel van een specifieke datum.
SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
Added20MoreDays |
---|
2017-02-03 00: 00: 00.000 |
Configuratie- en conversiefunctie
Een voorbeeld van een configuratiefunctie in SQL is de functie @@SERVERNAME
. Deze functie geeft de naam van de lokale server waarop SQL wordt uitgevoerd.
SELECT @@SERVERNAME AS 'Server'
Server |
---|
SQL064 |
In SQL vinden de meeste gegevensconversies impliciet plaats, zonder tussenkomst van de gebruiker.
Om conversies uit te voeren die niet impliciet kunnen worden voltooid, kunt u de functies CAST
of CONVERT
.
De syntaxis van de CAST
functie is eenvoudiger dan de syntaxis van de CONVERT
functie, maar is beperkt in wat het kan doen.
Hier gebruiken we zowel de CAST
als de CONVERT
functies om het datetime-gegevenstype om te zetten in het varchar
gegevenstype.
De CAST
functie gebruikt altijd de standaardstijlinstelling. Het vertegenwoordigt bijvoorbeeld datums en tijden met de indeling JJJJ-MM-DD.
De CONVERT
functie gebruikt de datum- en tijdstijl die u opgeeft. In dit geval geeft 3 de datumnotatie dd / mm / jj op.
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
Gips | Converteren |
---|---|
David Hamiltion werd aangenomen op 04-04-2003 | David Hamiltion werd aangenomen op 04/02/03 |
Een ander voorbeeld van een conversiefunctie is de PARSE
functie. Deze functie converteert een tekenreeks naar een opgegeven gegevenstype.
In de syntaxis voor de functie geeft u de tekenreeks op die moet worden geconverteerd, het AS
sleutelwoord en vervolgens het vereiste gegevenstype. Optioneel kunt u ook de cultuur opgeven waarin de tekenreekswaarde moet worden opgemaakt. Als u dit niet opgeeft, wordt de taal voor de sessie gebruikt.
Als de tekenreekswaarde niet kan worden geconverteerd naar een numerieke, datum- of tijdnotatie, resulteert dit in een fout. U moet dan CAST
of CONVERT
voor de conversie.
SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
Datum in het Engels |
---|
2012-08-13 00: 00: 00.0000000 |
Logische en wiskundige functie
SQL heeft twee logische functies - CHOOSE
en IIF
.
De functie CHOOSE
retourneert een item uit een zoeklijst op basis van de positie in de lijst. Deze positie wordt gespecificeerd door de index.
In de syntaxis geeft de indexparameter het item aan en is het een geheel getal of een geheel getal. De parameter val_1 ... val_n identificeert de zoeklijst.
SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
Resultaat |
---|
verkoop |
In dit voorbeeld gebruikt u de functie CHOOSE
om het tweede item in een lijst met afdelingen te retourneren.
De IIF
functie retourneert een van twee waarden, gebaseerd op een bepaalde voorwaarde. Als de voorwaarde waar is, wordt de werkelijke waarde geretourneerd. Anders wordt een valse waarde geretourneerd.
In de syntaxis geeft de parameter boolean_expression de Booleaanse expressie aan. De parameter true_value geeft de waarde aan die moet worden geretourneerd als de boolean_expression wordt geëvalueerd en de parameter false_value geeft de waarde aan die moet worden geretourneerd als de boolean_expression wordt geëvalueerd.
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 | Geen bonus |
In dit voorbeeld gebruikt u de IIF-functie om een van twee waarden te retourneren. Als de jaaromzet van een verkoper hoger is dan 200.000, komt deze persoon in aanmerking voor een bonus. Waarden onder 200.000 betekenen dat werknemers niet in aanmerking komen voor bonussen.
SQL bevat verschillende wiskundige functies die u kunt gebruiken om berekeningen uit te voeren op invoerwaarden en numerieke resultaten te retourneren.
Een voorbeeld is de functie SIGN
, die een waarde retourneert die het teken van een uitdrukking aangeeft. De waarde van -1 geeft een negatieve uitdrukking aan, de waarde van +1 geeft een positieve uitdrukking aan en 0 geeft nul aan.
SELECT SIGN(-20) AS 'Sign'
Teken |
---|
-1 |
In het voorbeeld is de invoer een negatief getal, dus geeft het paneel Resultaten het resultaat -1 weer.
Een andere wiskundige functie is de POWER
functie. Deze functie biedt de waarde van een uitdrukking die tot een opgegeven macht is verhoogd.
In de syntaxis geeft de parameter float_expression de expressie op en geeft de parameter y de macht op waarnaar u de expressie wilt verhogen.
SELECT POWER(50, 3) AS Result
Resultaat |
---|
125000 |