Fungsi Logis - CHOOSE (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mengembalikan item pada indeks yang ditentukan dari daftar nilai di SQL Server.
Sintaks
CHOOSE ( index, val_1, val_2 [, val_n ] )
Argumen
index
Adalah ekspresi bilangan bulat yang mewakili indeks berbasis 1 ke dalam daftar item yang mengikutinya.
Jika nilai indeks yang disediakan memiliki jenis data numerik selain int, maka nilai secara implisit dikonversi menjadi bilangan bulat. Jika nilai indeks melebihi batas array nilai, maka CHOOSE mengembalikan null.
val_1 ... val_n
Daftar nilai yang dipisahkan koma dari jenis data apa pun.
Jenis Kembalian
Mengembalikan tipe data dengan prioritas tertinggi dari kumpulan jenis yang diteruskan ke fungsi. Untuk informasi selengkapnya, lihat Prioritas Tipe Data (Transact-SQL).
Keterangan
CHOOSE bertindak seperti indeks ke dalam array, di mana array terdiri dari argumen yang mengikuti argumen indeks. Argumen indeks menentukan nilai mana yang akan dikembalikan.
Contoh
J. Contoh CHOOSE sederhana
Contoh berikut mengembalikan item ketiga dari daftar nilai yang disediakan.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Berikut set hasilnya.
Result
-------------
Developer
(1 row(s) affected)
B. Contoh CHOOSE sederhana berdasarkan kolom
Contoh berikut mengembalikan string karakter sederhana berdasarkan nilai di ProductCategoryID
kolom .
USE AdventureWorks2022;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
Berikut set hasilnya.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
C. PILIH dalam kombinasi dengan BULAN
Contoh berikut mengembalikan musim di mana model produk terakhir diubah. Fungsi MONTH
ini digunakan untuk mengembalikan nilai bulan dari kolom ModifiedDate
. Fungsi CHOOSE
ini digunakan untuk menetapkan musim Belahan Bumi Utara. Sampel ini menggunakan AdventureWorksLT
database, yang dapat dengan cepat diinstal sebagai database sampel untuk Azure SQL Database baru. Untuk informasi selengkapnya, lihat Database sampel AdventureWorks.
SELECT Name, ModifiedDate,
CHOOSE(MONTH(ModifiedDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Modified
FROM SalesLT.ProductModel AS PM
WHERE Name LIKE '%Frame%'
ORDER BY ModifiedDate;
Berikut set hasilnya.
Name ModifiedDate Quarter_Modified
--------------------------- ----------------------- ----------------
HL Road Frame 2002-05-02 00:00:00.000 Spring
HL Mountain Frame 2005-06-01 00:00:00.000 Summer
LL Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame-W 2006-06-01 00:00:00.000 Summer
ML Mountain Frame 2006-06-01 00:00:00.000 Summer
ML Mountain Frame-W 2006-06-01 00:00:00.000 Summer
LL Mountain Frame 2006-11-20 09:56:38.273 Autumn
HL Touring Frame 2009-05-16 16:34:28.980 Spring
LL Touring Frame 2009-05-16 16:34:28.980 Spring
(10 rows affected)