Skaler işlevleri kullanma

Tamamlandı

Skaler işlevler tek bir değer döndürür ve genellikle tek bir veri satırı üzerinde çalışır. Aldıkları giriş değerlerinin sayısı sıfır (örneğin, GETDATE), bir (örneğin, BÜYÜKHARF) veya birden çok (örneğin, YUVARLA) olabilir. Skaler işlevler her zaman tek bir değer döndürdiğinden, tek bir değerin (sonuç) gerekli olduğu her yerde kullanılabilir. Bunlar en yaygın olarak SELECT yan tümcelerinde ve WHERE yan tümcesi koşullarında kullanılır. Bunlar bir UPDATE deyiminin SET yan tümcesinde de kullanılabilir.

Yerleşik skaler işlevler dize, dönüştürme, mantıksal, matematiksel ve diğerleri gibi birçok kategoride düzenlenebilir. Bu modülde birkaç yaygın skaler işleve bakılacaktır.

Skaler işlevleri kullanırken dikkat edilmesi gereken bazı noktalar şunlardır:

  • Determinizm: İşlev her çağrıldığında aynı giriş ve veritabanı durumu için aynı değeri döndürürse, belirleyici olduğunu söyleriz. Örneğin, YUVARLA(1.1, 0) her zaman 1.0 değerini döndürür. Birçok yerleşik işlev belirsiz değildir. Örneğin, GETDATE() geçerli tarih ve saati döndürür. Belirsiz olmayan işlevlerden elde edilen sonuçlar dizine alınamaz ve bu da sorgu işlemcisinin sorguyu yürütmek için iyi bir plan oluşturma becerisini etkiler.
  • Harmanlama: Karakter verilerini işleyen işlevler kullanılırken hangi harmanlama kullanılacak? Bazı işlevler giriş değerinin harmanlamasını (sıralama düzeni) kullanır; diğerleri, giriş harmanlaması sağlanmazsa veritabanının harmanlamasını kullanır.

Skaler işlev örnekleri

Yazma sırasında, SQL Server Teknik Belgeleri aşağıdakiler dahil olmak üzere birden çok kategoriye yayılan 200'den fazla skaler işlev listeledi:

  • Yapılandırma işlevleri
  • Dönüştürme işlevleri
  • İmleç işlevleri
  • Date ve Time işlevleri
  • Matematiksel işlevler
  • Meta veri işlevleri
  • Güvenlik işlevleri
  • Dize işlevleri
  • Sistem işlevleri
  • Sistem İstatistiksel işlevleri
  • Metin ve Görüntü işlevleri

Bu kursta her işlevi açıklamak için yeterli zaman yoktur, ancak aşağıdaki örneklerde yaygın olarak kullanılan bazı işlevler gösterilmektedir.

Aşağıdaki varsayımsal örnek birkaç tarih ve saat işlevini kullanır:

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;

Kısmi sonuçlar aşağıda gösterilmiştir:

SalesOrderID

OrderDate

OrderYear

OrderMonth

OrderDay

OrderWeekDay

YearsSinceOrder

71774

2008-06-01T00:00:00

2008

Haziran

1

Pazar

13

...

...

...

...

...

...

...

Sonraki örnekte bazı matematiksel işlevler yer alır:

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;

Kısmi sonuçlar:

TaxAmt

Yuvarlak

Kat

Üst

Kare

Kök

Günlük

Randomize

70.4279

70.0000

70.0000

71.0000

4960.089098

8.392133221

4.254589491

28.64120429

...

..

...

...

...

...

...

...

Aşağıdaki örnek bazı dize işlevlerini kullanır:

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;

Kısmi sonuçlar:

CompanyName

Büyük

Küçük

Uzunluk

Reversed

FirstSpace

FirstWord

RestOfName

Bisiklet Mağazası

BISIKLET MAĞAZASı

bisiklet mağazası

12

erotS ekib A

2

A

Bisiklet Mağazası

Progresif Sporlar

PROGRESİF SPORLAR

ilerici sporlar

18

stropS evissergorP

12

Progressive

Spor

Gelişmiş Bisiklet Bileşenleri

GELIŞMIŞ BISIKLET BILEŞENLERI

gelişmiş bisiklet bileşenleri

24

stnenopmoC ekiB decnavdA

9

Gelişmiş

Bisiklet Bileşenleri

...

...

...

...

...

...

...

...

Mantıksal işlevler

Başka bir işlev kategorisi, birkaç değerden hangisinin döndürüleceğini belirlemeye olanak tanır. Mantıksal işlevler bir giriş ifadesini değerlendirir ve sonucu temel alarak uygun bir değer döndürür.

IIF

IIF işlevi bir Boole giriş ifadesini değerlendirir ve ifade True olarak değerlendirilirse belirtilen değeri ve ifade False olarak değerlendirilirse alternatif bir değer döndürür.

Örneğin, bir müşterinin adres türünü değerlendiren aşağıdaki sorguyu göz önünde bulundurun. Değer "Ana Office" ise, ifade "Faturalama" döndürür. Diğer tüm adres türü değerleri için ifade "Postalama" döndürür.

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

Bu sorgunun kısmi sonuçları aşağıdaki gibi görünebilir:

AddressType

UseAddressFor

Ana Ofis

Faturalama

Sevkiyat

Posta

...

...

SEÇİN

CHOOSE işlevi bir tamsayı ifadesini değerlendirir ve (1 tabanlı) sıralı konumuna göre bir listeden karşılık gelen değeri döndürür.

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

Bu sorgunun sonuçları şuna benzer olabilir:

SalesOrderID

Durum

OrderStatus

1234

3

Teslim edildi

1235

2

Sevk Edildi

1236

2

Sevk Edildi

1237

1

Sipariş edilen

...

...

...