Skaláris függvények használata

Befejeződött

A skaláris függvények egyetlen értéket adnak vissza, és általában egyetlen adatsoron működnek. Az általuk vett bemeneti értékek száma lehet nulla (például GETDATE), egy (például FELSŐ) vagy több (például KEREK). Mivel a skaláris függvények mindig egyetlen értéket adnak vissza, bárhol használhatók, ahol egyetlen értékre (az eredményre) van szükség. Ezeket leggyakrabban a SELECT záradékokban és a WHERE záradék predikátumaiban használják. Az UPDATE utasítás SET záradékában is használhatók.

A beépített skaláris függvények számos kategóriába sorolhatók, például sztringek, konvertálás, logikai, matematikai és egyéb kategóriákba. Ez a modul néhány gyakori skaláris függvényt fog áttekinteni.

A skaláris függvények használatakor megfontolandó szempontok a következők:

  • Determinizmus: Ha a függvény minden híváskor ugyanazt az értéket adja vissza ugyanahhoz a bemenethez és adatbázisállapothoz, azt mondjuk, hogy determinisztikus. A KEREKÍTÉS(1.1, 0) például mindig az 1,0 értéket adja vissza. Számos beépített függvény nemdeterminista. A GETDATE() például az aktuális dátumot és időt adja vissza. A nemdeterminisztikus függvények eredményei nem indexelhetők, ami befolyásolja a lekérdezésfeldolgozó azon képességét, hogy megfelelő tervet találjon a lekérdezés végrehajtásához.
  • Rendezés: A karakteradatokat kezelő függvények használatakor melyik rendezést fogja használni? Egyes függvények a bemeneti érték rendezési sorrendjét használják; mások akkor használják az adatbázis rendezést, ha nincs megadva bemeneti rendezés.

Skaláris függvények példái

Az íráskor az SQL Server műszaki dokumentációja több mint 200 olyan skaláris függvényt sorolt fel, amelyek több kategóriára is kiterjednek, többek között a következőkre:

  • Konfigurációs függvények
  • Konverziós függvények
  • Kurzorfüggvények
  • Dátum- és időfüggvények
  • Matematikai függvények
  • Metaadat-függvények
  • Biztonsági függvények
  • Sztringfüggvények
  • Rendszerfüggvények
  • Rendszerstatisztikai függvények
  • Szöveg- és képfüggvények

Ebben a kurzusban nincs elég idő az egyes függvények leírására, de az alábbi példák néhány gyakran használt függvényt mutatnak be.

Az alábbi hipotetikus példa több dátum- és időfüggvényt használ:

SELECT  SalesOrderID,
    OrderDate,
        YEAR(OrderDate) AS OrderYear,
        DATENAME(mm, OrderDate) AS OrderMonth,
        DAY(OrderDate) AS OrderDay,
        DATENAME(dw, OrderDate) AS OrderWeekDay,
        DATEDIFF(yy,OrderDate, GETDATE()) AS YearsSinceOrder
FROM Sales.SalesOrderHeader;

A részleges eredmények az alábbiakban láthatók:

SalesOrderID

OrderDate

OrderYear

OrderMonth

OrderDay

OrderWeekDay

YearsSinceOrder

71774

2008-06-01T00:00:00

2008

Június

0

Vasárnap

13

...

...

...

...

...

...

...

A következő példa néhány matematikai függvényt tartalmaz:

SELECT TaxAmt,
       ROUND(TaxAmt, 0) AS Rounded,
       FLOOR(TaxAmt) AS Floor,
       CEILING(TaxAmt) AS Ceiling,
       SQUARE(TaxAmt) AS Squared,
       SQRT(TaxAmt) AS Root,
       LOG(TaxAmt) AS Log,
       TaxAmt * RAND() AS Randomized
FROM Sales.SalesOrderHeader;

Részleges eredmények:

TaxAmt

Kerekített

Floor

Ceiling

Négyzet

Gyökér

Napló

Randomizált

70.4279

70.0000

70.0000

71.0000

4960.089098

8.392133221

4.254589491

28.64120429

...

..

...

...

...

...

...

...

Az alábbi példa néhány sztringfüggvényt használ:

SELECT  CompanyName,
        UPPER(CompanyName) AS UpperCase,
        LOWER(CompanyName) AS LowerCase,
        LEN(CompanyName) AS Length,
        REVERSE(CompanyName) AS Reversed,
        CHARINDEX(' ', CompanyName) AS FirstSpace,
        LEFT(CompanyName, CHARINDEX(' ', CompanyName)) AS FirstWord,
        SUBSTRING(CompanyName, CHARINDEX(' ', CompanyName) + 1, LEN(CompanyName)) AS RestOfName
FROM Sales.Customer;

Részleges eredmények:

CompanyName

Nagybetűs

Kisbetűs

Hossz

Reversed

FirstSpace

FirstWord

RestOfName

Kerékpáráruház

KERÉKPÁRÁRUHÁZ

kerékpáráruház

12

erotS ekiB A

2

A

Bike Store

Progresszív sportok

PROGRESSZÍV SPORTOK

progresszív sportok

18

stropS evissergorP

12

Progresszív

Sport

Speciális kerékpárösszetevők

SPECIÁLIS KERÉKPÁRÖSSZETEVŐK

speciális kerékpárösszetevők

24

stnenopmoC ekiB decnavdA

9

Speciális

Kerékpárösszetevők

...

...

...

...

...

...

...

...

Logikai függvények

A függvények egy másik kategóriája lehetővé teszi több érték visszaadásának meghatározását. A logikai függvények kiértékelnek egy bemeneti kifejezést, és az eredmény alapján visszaadják a megfelelő értéket.

IIF

Az IIF függvény kiértékel egy logikai bemeneti kifejezést, és egy megadott értéket ad vissza, ha a kifejezés igaz értéket ad vissza, és egy másik értéket, ha a kifejezés hamis értéket ad vissza.

Vegyük például az alábbi lekérdezést, amely kiértékeli az ügyfél címtípusát. Ha az érték "Főiroda", a kifejezés a "Számlázás" értéket adja vissza. Az összes többi címtípus-érték esetében a kifejezés a "Levelezés" értéket adja vissza.

SELECT AddressType,
      IIF(AddressType = 'Main Office', 'Billing', 'Mailing') AS UseAddressFor
FROM Sales.CustomerAddress;

A lekérdezés részleges eredményei a következőképpen nézhetnek ki:

AddressType

UseAddressFor

Főiroda

Számlázás

Szállítás

Levelezési

...

...

VÁLASZT

A CHOOSE függvény kiértékel egy egész számot, és visszaadja a megfelelő értéket egy listából az (1-alapú) sorszám alapján.

SELECT SalesOrderID, Status,
CHOOSE(Status, 'Ordered', 'Shipped', 'Delivered') AS OrderStatus
FROM Sales.SalesOrderHeader;

A lekérdezés eredményei a következőképpen nézhetnek ki:

SalesOrderID

Állapot

OrderStatus

1234

3

Kézbesítve

1235

2

Szállított

1236

2

Szállított

1237

0

Megrendelve

...

...

...