Hanya sebuah pertanyaan tentang menangani nilai nol dalam kueri.
Sebagai contoh, saya memiliki tabel berikut dengan bidang dan nilai berikut
TABLEX
Column1
1
2
3
4
5
---------
Column2
null
A
B
C
null
Saya mengoper variabelY pada sebuah prosedur tertentu. Di dalam prosedur tersebut terdapat kursor seperti ini
CURSOR c_results IS
SELECT * FROM TABLEX where column2 = variableY
sekarang masalahnya adalah variabelY bisa berupa null, A, B atau C jika variabelY bernilai null, saya ingin memilih semua record di mana kolom2 bernilai null, jika tidak, maka kolom2 bernilai A, B atau C.
Saya tidak dapat melakukan kursor / kueri di atas karena jika variabelY bernilai null, itu tidak akan berfungsi karena perbandingannya harus
CURSOR c_results IS
SELECT * FROM TABLEX where column2 IS NULL
Kursor/kueri apa yang harus saya gunakan untuk mengakomodasi variabel null atau string.
Maaf jika pertanyaan saya agak membingungkan. Saya tidak pandai menjelaskan sesuatu. Terima kasih sebelumnya.
Anda bisa menggunakan sesuatu seperti:
SELECT * FROM TABLEX WHERE COALESCE(column2, '') = COALESCE(variableY, '')
(COALESCE mengambil nilai non NULL pertama)
Perhatikan bahwa ini hanya akan berfungsi jika konten kolom Anda tidak boleh berupa '' (string kosong). Jika tidak, pernyataan ini akan gagal karena NULL akan cocok dengan '' (string kosong).
(sunting) Anda juga bisa mempertimbangkan:
SELECT * FROM TABLEX WHERE COALESCE(column2, 'a string that never occurs') = COALESCE(variableY, 'a string that never occurs')
Ini akan memperbaiki '' hipotesis gagal.
Coba gunakan fungsi ISNULL()
. Anda dapat memeriksa apakah variabel tersebut null dan jika ya, tetapkan nilai pengembalian default. membandingkan null dengan null tidak benar-benar mungkin. ingat: null < > null