SQL Server NULL di Query Select Case When
Pernah bikin Select Query di SQL Server menggunakan CASE ?
Kalau pernah pasti membingungkan pas bikin CASE di data yang isinya NULL, tapi kalau belum pernah bikin Query CASE bisa klik link ini
Kenapa bingung ?
Karena hasilnya sangat konsisten banget banget, konsisten nggak mengeluarkan hasil yang kita inginkan, mau di coba berkali kali hasilnya tetep bukan yang kita mau, gw merasa jadi orang bodo banget. “mencoba hal yang sama dan mengharapkan hasil yang berbeda” [Quoted from NN]
mari kita lihat contoh dibawah,
ID NAMA KELAS
1 Joko NULL
2 Budi Berat
3 Tono Ringan
4 Tini NULL
Tebak apa hasilnya kalo gw jalanin query dibawah
SELECT NAMA, CASE KELAS WHEN NULL THEN 'BELUM REGISTER' ELSE 'REGISTER' END AS KELAS FROM XXXX
Kalau pikirannya sama kaya jawaban dibawah, itu salah, kalau gak percaya silahkan coba sendiri,
Joko BELUM REGISTER
Budi REGISTER
Tono REGISTER
Tini BELUM REGISTER
Hasilnya bakal kaya di bawah, kalau gak percaya coba sendiri,
Joko REGISTER
Budi REGISTER
Tono REGISTER
Tini REGISTER
Kok Aneh ?
Gw sendiri juga gak tau, tapi peduli amat kenapa aneh, yang penting hasil yang gw mau, mencari yang 'BELUM REGISTER' bisa tercapai.
Gimana caranya ?
SELECT NAMA, CASE ISNULL(KELAS,'') WHEN '' THEN 'BELUM REGISTER' ELSE 'REGISTER' END AS KELAS FROM FROM XXXX
Yakin Put ?
Hmmmm.. coba sendiri aja deh :p gw mau cari DVD Gossip Girl Dulu [it's one Secret ill never tell]
saya coba dengan 'when is null' bisa juga :)
BalasHapus@Ojat
BalasHapushasil akhir Querynya gimana kira2 om, sharing2 yaaa om :D
Aduh kan, saya lebih bingung lagi bacanya. Maklumlah, kakak da berumur... *halah...
BalasHapusSELECT nama, ISNULL(kelas, 'belum register') AS kls FROM xxx
BalasHapusbisa keluar tar daftarnya kumplit.rgister dan belum register. tinggal ntar di where aja tuh yang mana yang mau dimunculin..
hehe..
salam kenal mas put
@zizydmk
BalasHapusberumur.. but still look good in jeans
@twin c
query kamu hasilnya bisa salah.. lihat dibawah..
Joko BELUM REGISTER
Budi Berat
Tono Ringan
Tini BELUM REGISTER
harusnya kalau ada kelasnya di rubah jadi REGISTER,
btw salam kenal juga :D
kan td yang penting munculin yang belum di register..:P ...jadi kaga di pikir yang udah diisi kelasnya...
BalasHapusSELECT * from(
SELECT nama, ISNULL(kelas, 'belum register') AS kls FROM xxx) where kls='belum register'
hihihhihii...:D
@twin_c
BalasHapustapi kan yang mau di muculin yang "REGISTER" dan "BELUM REGISTER"
hehehehe
pake ini put hehehe
BalasHapusSELECT NAMA,CASE WHEN KELAS IS NULL THEN 'Belum Register' ELSE 'Register' END AS Status
FROM xxxxxx
hasilnya sama kyk hasil querymu :)
yowis lah..manut karo master'e wae..hihihi
BalasHapus@ojat oh yah :D, sip mantap sharingnya..
BalasHapus@twin_c hehehe sama2 belajar :p