Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
switch
membandingkan ekspresi kondisi dengan label literal, dalam satu set label literal dan pasangan ekspresi kembali. Kemudian mengembalikan ekspresi kembali yang sesuai dengan label literal pertama yang sama dengan ekspresi kondisi. Jika tidak ada label sama dengan kondisi-ekspresi, mengembalikan default-ekspresi. switch
Setiap ekspresi kembali dan ekspresi default harus memiliki tipe data yang sama.
Sintaks
switch(
condition-expression
,label-1
,return-expression-1
[,label-n
,return-expression-n
...],default-expression
)
Pendapat
switch
membutuhkan satu atau lebih if, maka pasangan ekspresi, dan membutuhkan tepat satu ekspresi untuk argumen else.
- kondisi-ekspresi
-
Ekspresi yang akan dibandingkan dengan label-literal. Ini bisa berupa nama bidang seperti
address
, nilai literal seperti 'Unknown
', atau fungsi skalar lain sepertitoString(salesAmount)
. - label
-
Secara literal untuk dibandingkan dengan argumen kondisi-ekspresi, semua literal harus memiliki tipe data yang sama dengan argumen kondisi-ekspresi.
switch
menerima hingga 5000 label. - kembali-ekspresi
-
Ekspresi untuk kembali jika nilai labelnya sama dengan nilai kondisi-ekspresi. Ini bisa berupa nama bidang seperti
address
, nilai literal seperti 'Unknown
', atau fungsi skalar lain sepertitoString(salesAmount)
. Semua argumen return-expression harus memiliki tipe data yang sama dengan default-expression. - default-ekspresi
-
Ekspresi untuk mengembalikan jika tidak ada nilai argumen label sama dengan nilai ekspresi kondisi. Ini bisa berupa nama bidang seperti
address
, nilai literal seperti 'Unknown
', atau fungsi skalar lain sepertitoString(salesAmount)
. Ekspresi default harus memiliki tipe data yang sama dengan semua argumen ekspresi kembali.
Jenis pengembalian
switch
mengembalikan nilai dari tipe data yang sama dengan nilai-nilai dalam ekspresi kembali. Semua data yang dikembalikan return-expression dan default-expression harus dari tipe data yang sama atau dikonversi ke tipe data yang sama.
Contoh Umum
Contoh berikut mengembalikan Wilayah AWS kode nama wilayah masukan.
switch(region_name,
"US East (N. Virginia)", "us-east-1",
"Europe (Ireland)", "eu-west-1",
"US West (N. California)", "us-west-1",
"other regions")
Berikut ini adalah nilai bidang yang diberikan.
"US East (N. Virginia)"
"US West (N. California)"
"Asia Pacific (Tokyo)"
Untuk nilai bidang ini nilai berikut dikembalikan.
"us-east-1"
"us-west-1"
"other regions"
Gunakan sakelar untuk mengganti ifelse
Kasus ifelse
penggunaan berikut adalah setara dengan contoh sebelumnya, untuk ifelse
mengevaluasi apakah nilai satu bidang sama dengan nilai literal yang berbeda, menggunakan switch
sebagai gantinya adalah pilihan yang lebih baik.
ifelse(region_name = "US East (N. Virginia)", "us-east-1",
region_name = "Europe (Ireland)", "eu-west-1",
region_name = "US West (N. California)", "us-west-1",
"other regions")
Ekspresi sebagai nilai kembali
Contoh berikut menggunakan ekspresi dalam ekspresi kembali:
switch({origin_city_name},
"Albany, NY", {arr_delay} + 20,
"Alexandria, LA", {arr_delay} - 10,
"New York, NY", {arr_delay} * 2,
{arr_delay})
Contoh sebelumnya mengubah waktu tunda yang diharapkan untuk setiap penerbangan dari kota tertentu.
