Gunakan fungsi bernilai skalar

Selesai

Fungsi bernilai skalar mengembalikan satu nilai dan biasanya bekerja pada satu baris data. Jumlah nilai input yang diambil dapat nol (misalnya, GETDATE), satu (misalnya, UPPER), atau kelipatan (misalnya, ROUND). Karena fungsi bernilai skalar selalu mengembalikan nilai tunggal, mereka dapat digunakan di mana saja saat nilai tinggal (hasilnya) diperlukan. Mereka paling sering digunakan dalam klausa SELECT dan predikat klausa WHERE. Mereka juga dapat digunakan dalam klausa SET dari pernyataan UPDATE.

Fungsi bernilai skalar bawaan dapat diatur ke dalam banyak kategori, seperti string, konversi, logis, matematika, dan lain-lain. Modul ini akan melihat beberapa fungsi bernilai skalar umum.

Beberapa pertimbangan saat menggunakan fungsi bernilai skalar meliputi:

  • Determinisme: Jika fungsi mengembalikan nilai yang sama untuk status input dan database yang sama setiap kali dipanggil, kami menyebutnya deterministik. Misalnya, ROUND(1.1, 0) selalu mengembalikan nilai 1.0. Banyak fungsi bawaan yang tidak menentukan. Misalnya, GETDATE () mengembalikan tanggal dan waktu saat ini. Hasil dari fungsi nondeterministik tidak dapat diindeks, yang mempengaruhi kemampuan prosesor kueri untuk menghasilkan rencana yang baik untuk mengeksekusi kueri.
  • Kolase: Saat menggunakan fungsi yang memanipulasi data karakter, kolase mana yang akan digunakan? Beberapa fungsi menggunakan kolase (urutan sortir) dari nilai input; yang lain menggunakan kolase database jika tidak ada kolase input yang disediakan.

Contoh fungsi bernilai skalar

Pada saat penulisan, Dokumentasi Teknis SQL Server mencantumkan lebih dari 200 fungsi bernilai skalar yang mencakup beberapa kategori, termasuk:

  • Fungsi konfigurasi
  • Fungsi konversi
  • Fungsi kursor
  • Fungsi Tanggal dan Waktu
  • Fungsi Matematika
  • Fungsi metadata
  • Fungsi keamanan
  • Fungsi string
  • Fungsi sistem
  • Fungsi Statistik Sistem
  • Fungsi Teks dan Gambar

Kursus ini tidak memiliki cukup banyak waktu untuk menggambarkan setiap fungsi, tetapi contoh di bawah ini menunjukkan beberapa fungsi yang umum digunakan.

Contoh hipotetis berikut menggunakan beberapa fungsi tanggal dan waktu:

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;

Hasil parsial ditunjukkan di bawah ini:

ID Pesanan Penjualan

Tanggal Pemesanan

Tahun Pesanan

Bulan Pesanan

Hari Pemesanan

OrderWeekDay

TahunSejakPesanan

71774

2008-06-01T00:00:00

2008

Juni

1

Hari Minggu

13

...

...

...

...

...

...

...

Contoh berikutnya mencakup beberapa fungsi matematika:

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;

Hasil parsial:

TaxAmt

Dibulatkan

Lantai

ceiling

Kuadrat

Akar

Catatan

Acak

70,4279

70.0000

70.0000

71.0000

4960.089098

8.392133221

4.254589491

28.64120429

...

..

...

...

...

...

...

...

Contoh berikut menggunakan beberapa fungsi string:

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;

Hasil parsial:

NamaPerusahaan

Huruf Besar

Huruf kecil

Panjang

Terbalik

FirstSpace

KataPertama

RestOfName

Toko Sepeda

TOKO SEPEDA

toko sepeda

12

erotS ekiB A

2

Sebuah

Toko Sepeda

Olahraga Progresif

OLAHRAGA PROGRESIF

olahraga progresif

18

stropS evissergorP

12

Progresif

Olahraga

Komponen Sepeda Tingkat Lanjut

KOMPONEN SEPEDA TINGKAT LANJUT

komponen sepeda tingkat lanjut

24

stnenopmoC ekiB decnavdA

9

Tingkat Lanjut

Komponen Sepeda

...

...

...

...

...

...

...

...

Fungsi logika

Kategori fungsi lain memungkinkan menentukan mana dari beberapa nilai yang akan dikembalikan. Fungsi logika mengevaluasi ekspresi input, dan mengembalikan nilai yang sesuai berdasarkan hasilnya.

IIF

Fungsi IIF mengevaluasi ekspresi input Boolean, dan mengembalikan nilai yang ditentukan jika ekspresi mengevaluasi ke Benar, dan nilai alternatif jika ekspresi mengevaluasi ke Salah.

Misalnya, pertimbangkan kueri berikut, yang mengevaluasi tipe alamat pelanggan. Jika nilainya adalah "Main Office", ekspresi akan mengembalikan "Penagihan". Untuk semua nilai jenis alamat lainnya, ekspresi akan mengembalikan "Mailing".

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

Hasil parsial dari kueri ini mungkin terlihat seperti ini:

JenisAlamat

GunakanAddressFor

Office Utama

Penagihan

Pengiriman

Pengiriman

...

...

PILIH

Fungsi CHOOSE mengevaluasi ekspresi bilangan bulat, dan mengembalikan nilai terkait dari daftar berdasarkan posisi ordinal (berbasis 1).

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

Hasil dari kueri ini mungkin terlihat seperti ini:

ID Pesanan Penjualan

Kedudukan

Status Pesanan

1234

3

Dikirim

1235

2

Dikirim

1236

2

Dikirim

1237

1

Dipesan

...

...

...