Anda dapat menggunakan fungsi alur kontrol untuk mengevaluasi kondisi dalam kueri SQL. Topik ini menjelaskan sintaksis fungsi alur kontrol di AnalyticDB for MySQL serta memberikan contoh penggunaannya.
Data sampel
Dalam contoh ini, tabel bernama conditiontest digunakan untuk menguji fungsi alur kontrol.
Jalankan pernyataan berikut untuk membuat tabel conditiontest dan menyisipkan data ke dalamnya:
CREATE TABLE conditiontest(a INT) DISTRIBUTED BY HASH(a);
INSERT INTO conditiontest VALUES (1),(2),(3);CASE
Sintaksis 1
CASE expression
WHEN value THEN result
[WHEN value THEN result ...]
[ELSE result]
END Deskripsi: Fungsi ini membandingkan nilai parameter
valuedengan nilai parameterexpressionsecara berurutan. Jika nilai parametervaluesama dengan nilai parameterexpression, fungsi ini mengembalikan nilairesultdari parametervalue. Namun, jika tidak ada nilai parametervalueyang sesuai dengan nilai parameterexpression, fungsi ini mengembalikan nilairesultdalam klausaELSE.Contoh:
SELECT a, CASE a WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'three' END as caseresult FROM conditiontest;Hasil sampel:
+---+------------+ | a | caseresult | +---+------------+ | 2 | two | | 1 | one | | 3 | three | +---+------------+
Sintaksis 2
CASE
WHEN condition THEN result
[WHEN condition THEN result...]
[ELSE result]
ENDDeskripsi: Fungsi ini memeriksa nilai parameter
conditionsecara berurutan. Jika nilai parameterconditionadalah true, fungsi ini mengembalikan nilairesultdari parametercondition. Jika semua nilai parameterconditionadalah false, fungsi ini mengembalikan nilairesultdalam klausaELSE.Contoh:
SELECT a, CASE WHEN a=1 THEN 'one1' WHEN a=2 THEN 'two2' ELSE 'three3' END as caseresult FROM conditiontest;Hasil sampel:
+---+------------+ | a | caseresult | +---+------------+ | 1 | one1 | | 3 | three3 | | 2 | two2 | +---+------------+
IF
Sintaksis 1
IF(condition, true_value)Deskripsi: Jika nilai parameter
conditionadalahtrue, fungsi ini mengembalikan nilai parametertrue_value. Sebaliknya, fungsi ini mengembalikannull.Contoh:
SELECT IF((2+3)>4,5);+-------+ | _col0 | +-------+ | 5 |
Sintaksis 2
IF(condition, true_value, false_value)Deskripsi: Jika nilai parameter
conditionadalahtrue, fungsi ini mengembalikan nilai parametertrue_value. Sebaliknya, fungsi ini mengembalikan nilai parameterfalse_value.Contoh:
SELECT IF((2+3)<5,5,6);+-------+ | _col0 | +-------+ | 6 |
IFNULL
IFNULL(expr1,expr2)Deskripsi: Jika nilai parameter
expr1tidak null, fungsi ini mengembalikan nilai parameterexpr1. Namun, jika nilainya null, fungsi ini mengembalikan nilai parameterexpr2.Contoh:
Contoh 1:
SELECT IFNULL(NULL,2);+-------+ | _col0 | +-------+ | 2 | +-------+Contoh 2:
SELECT IFNULL(1,0);+-------+ | _col0 | +-------+ | 1 | +-------+
NULLIF
NULLIF(expr1,expr2)Deskripsi: Jika nilai parameter
expr1sama dengan nilai parameterexpr2, fungsi ini mengembalikannull. Sebaliknya, fungsi ini mengembalikan nilai parameterexpr1.Contoh:
Contoh 1:
SELECT NULLIF (2,1);+-------+ | _col0 | +-------+ | 2 | +-------+Contoh 2:
SELECT NULLIF (2,2);+-------+ | _col0 | +-------+ | NULL | +-------+