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]

Share this:

CONVERSATION

10 comments:

  1. saya coba dengan 'when is null' bisa juga :)

    BalasHapus
  2. @Ojat
    hasil akhir Querynya gimana kira2 om, sharing2 yaaa om :D

    BalasHapus
  3. Aduh kan, saya lebih bingung lagi bacanya. Maklumlah, kakak da berumur... *halah...

    BalasHapus
  4. SELECT nama, ISNULL(kelas, 'belum register') AS kls FROM xxx

    bisa keluar tar daftarnya kumplit.rgister dan belum register. tinggal ntar di where aja tuh yang mana yang mau dimunculin..
    hehe..
    salam kenal mas put

    BalasHapus
  5. @zizydmk
    berumur.. 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

    BalasHapus
  6. kan td yang penting munculin yang belum di register..:P ...jadi kaga di pikir yang udah diisi kelasnya...
    SELECT * from(
    SELECT nama, ISNULL(kelas, 'belum register') AS kls FROM xxx) where kls='belum register'

    hihihhihii...:D

    BalasHapus
  7. @twin_c
    tapi kan yang mau di muculin yang "REGISTER" dan "BELUM REGISTER"

    hehehehe

    BalasHapus
  8. pake ini put hehehe
    SELECT NAMA,CASE WHEN KELAS IS NULL THEN 'Belum Register' ELSE 'Register' END AS Status
    FROM xxxxxx

    hasilnya sama kyk hasil querymu :)

    BalasHapus
  9. yowis lah..manut karo master'e wae..hihihi

    BalasHapus
  10. @ojat oh yah :D, sip mantap sharingnya..

    @twin_c hehehe sama2 belajar :p

    BalasHapus