pilih *,if(sva=1,"male","female") sebagai ssva dari taname di mana sva<>""
12.2. Kontrol fungsi aliran
Nilai CASE KETIKA [nilai bandingkan] KEMUDIAN hasil [Kapan [nilai bandingkan] KEMUDIAN hasil...] [Hasil LAINNYA] AKHIR KASUS KETIKA [kondisi] KEMUDIAN hasil [Kapan [kondisi] KEMUDIAN hasil...] [Hasil ELSE] AKHIR
Dalam hasil pengembalian skenario pertama, value=compare-value. Hasil pengembalian skenario kedua adalah hasil sebenarnya dari skenario pertama. Jika tidak ada nilai hasil yang cocok, maka hasil yang dikembalikan adalah hasil setelah ELSE. Jika tidak ada bagian ELSE, nilai yang dikembalikan adalah NULL.
mysql> PILIH KASUS 1 KETIKA 1 KEMUDIAN 'satu'
-> KETIKA 2 KEMUDIAN 'dua' LAIN 'lebih' AKHIR;
-> 'satu'
mysql> PILIH KASUS KETIKA 1>0 KEMUDIAN 'benar' LAIN 'salah' AKHIR
; 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
Tipe nilai kembalian default dari ekspresi CASE adalah tipe koleksi apa pun yang kompatibel dari nilai kembalian, tetapi Situasi spesifiknya bergantung pada konteksnya. Jika digunakan dalam konteks string, mengembalikan string yang dihasilkan. Jika digunakan dalam konteks numerik, hasilnya dikembalikan sebagai nilai desimal, real, atau integer.
JIKA(expr1,expr2,expr3)
Jika expr1 adalah TRUE (expr1 <> 0 dan expr1 <> NULL), nilai kembalian IF() adalah expr2; jika tidak, nilai kembalian adalah expr3. Nilai kembalian IF() dapat berupa nilai numerik atau nilai string, bergantung pada konteksnya.
mysql> PILIH JIKA(1>2,2,3);
-> 3
mysql> PILIH JIKA(1<2,'ya ','tidak');
-> 'ya'
mysql> PILIH JIKA(STRCMP('tes') ,'test1'),'no','yes');
-> 'no'Jika
hanya satu dari expr2 atau expr3 yang secara eksplisit NULL, tipe hasil dari fungsi IF() adalah tipe hasil dari ekspresi non-NULL .
expr1 dievaluasi sebagai nilai integer, yang berarti jika Anda memvalidasi nilai floating point atau nilai string, Anda harus menggunakan operasi perbandingan untuk memeriksanya.
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
Pada contoh pertama yang ditampilkan, nilai kembalian IF(0.1) adalah 0 karena 0,1 diubah menjadi nilai integer, menyebabkan pengujian IF(0). Ini mungkin bukan situasi yang Anda inginkan. Pada contoh kedua, perbandingan memeriksa nilai floating point asli untuk melihat apakah nilainya bukan nol. Gunakan bilangan bulat untuk hasil perbandingan.
Tipe pengembalian default IF() (ini penting bila disimpan dalam tabel sementara) dihitung sebagai berikut:
ekspresi
nilai kembalian
Nilai kembalian expr2 atau expr3 adalah string.
rangkaian
Nilai kembalian expr2 atau expr3 adalah nilai floating point.
titik mengambang
Nilai kembalian expr2 atau expr3 adalah bilangan bulat.
bilangan bulat
Jika expr2 dan expr3 keduanya merupakan string, dan salah satu string peka huruf besar-kecil, hasil yang dikembalikan peka huruf besar-kecil.
http://blog.knowsky.com/
IFNULL(expr1,expr2)
Jika expr1 bukan NULL, nilai kembalian IFNULL() adalah expr1; jika tidak, nilai kembalian adalah expr2. Nilai kembalian IFNULL() bisa berupa angka atau string, bergantung pada konteks penggunaannya.
mysql> PILIH IFNULL(1,0);
-> 1
mysql> PILIH IFNULL(NULL,10);
-
> 10
mysql> PILIH IFNULL(
1/0,10)
;'yes');
-> 'yes'
Nilai hasil default IFNULL(expr1,expr2) adalah salah satu dari dua ekspresi yang lebih "umum", dalam urutan STRING, REAL atau INTEGER. Asumsikan kasus tabel berbasis ekspresi, atau MySQL harus menyimpan nilai kembalian IFNULL() dalam tabel sementara di memori:
CREATE
TABLE tmp SELECT IFNULL(1,'test') AS test;
tipenya adalah CHAR(4).
NULLIF(expr1,expr2)
Jika expr1 = expr2 berlaku, nilai yang dikembalikan adalah NULL, jika tidak, nilai yang dikembalikan adalah expr1. Ini sama dengan KASUS KETIKA expr1 = expr2 THEN NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-
> NULL
mysql
> SELECT NULLIF(1,2);