2015-08-03 141 views
3

我從程序中傳遞where子句的參數值,但是當我發送至少一個值時,我得到的結果但是如果我發送所有參數爲null沒有輸出,我想要一個查詢這樣,如果所有參數都爲空派將在數據庫在SQL查詢中傳遞參數

下面顯示的所有記錄是,如果滿足一個條件是

SELECT * 
    FROM STUDENT 
    LEFT JOIN COURSE 
    ON STUDENT.COURSE_ID = COURSE.COURSE_ID 
WHERE STUDENT.STD_ID = null 
    OR STUDENT.STD_NAME = null 
    OR STUDENT.STD_START_DATE = null 
    OR STUDENT.STD_END_DATE = null 
    OR STUDENT.STD_GENDER = null 
    OR STUDENT.COURSE_ID = null; 
+2

'STD_START_DATE = null'不工作,你需要使用'STD_START_DATE IS null' –

+0

你是如何橫穿變量在你的程序?在您的示例sql語句中沒有看到任何參數。 – Boneist

回答

2

試試下面這檢索值的查詢,

SELECT * 
FROM STUDENT 
     LEFT JOIN COURSE 
       ON STUDENT.COURSE_ID = COURSE.COURSE_ID 
WHERE STUDENT.STD_ID IS NULL 
     OR STUDENT.STD_NAME IS NULL 
     OR STUDENT.STD_START_DATE IS NULL 
     OR STUDENT.STD_END_DATE IS NULL 
     OR STUDENT.STD_GENDER IS NULL 
     OR STUDENT.COURSE_ID IS NULL 
+0

實際上我的問題是,我需要一個查詢,如果所有的值都像上面查詢中指定的那樣空,我希望執行另一個查詢來獲取所有數據,而沒有任何條件,如SELECT * FROM STUDENT LEFT JOIN COURSE ON STUDENT.COURSE_ID = COURSE.COURSE_ID – user2218550

0

得到了解決:

SELECT * 
FROM 
STUDENT S,COURSE C 
WHERE 
S.STD_ID like '%'||null||'%' and S.STD_NAME like '%'||null ||'%' and S.STD_START_DATE like '%'||null ||'%' and S.STD_END_DATE like '%'||null ||'%' and S.STD_GENDER like '%'||null||'%' 
and S.COURSE_ID like '%'||null||'%' and S.COURSE_ID=C.COURSE_ID