簡體   English   中英

如何從表中獲取只有在連接兩個表之后沒有值的結果

[英]how to get result from table where there are no values only after joining two tables

Statement st=conn.createStatement();
String sql="SELECT a.ID,a.A_TEXT,a.B_TEXT,a.C,a.D_TO_E,a.F_TEXT,a.G,a.INTIME,b.EXIT_TIME FROM tm_A a LEFT JOIN tm_B b ON a.ID=b.ID WHERE EXIT_TIME=''";

ResultSet rs=st.executeQuery(sql);

while(rs.next())
    {

    arls.add(rs.getString("ID"));
    arls.add(rs.getString("A_TEXT"));
    arls.add(rs.getString("B_TEXT"));
    arls.add(rs.getString("C"));
    arls.add(rs.getString("D_TO_E"));
    arls.add(rs.getString("F_TEXT"));
    arls.add(rs.getString("G"));
    arls.add(rs.getString("INTIME"));
    arls.add(rs.getString("EXIT_TIME"));

    }

我有上面的代碼,我想從兩個表中檢索值,其中EXIT_TIME ='null'但是我執行后沒有得到任何東西雖然表tm_A中有值但是如果我刪除where子句然后我得到結果但是在EXIT_TIME下它顯示'null'並顯示正在顯示的值

如果要選擇null的結果,則必須使用is運算符:

SELECT a.ID,a.A_TEXT,a.B_TEXT,a.C,a.D_TO_E,a.F_TEXT,a.G,a.INTIME,b.EXIT_TIME 
FROM tm_A a 
LEFT JOIN tm_B b ON a.ID=b.ID 
WHERE EXIT_TIME is null

null比較總是會導致unknown 這就是為什么你需要is運算符而不是=

使用EXIT_TIME=''EXIT_TIME與空字符串進行比較,但不是null

如果您想要在EXIT_TIME中使用 null所有記錄,則可以使用

WHERE EXIT_TIME is not null

編輯

您可以使用case來避免文本框中的null

    SELECT a.ID, 
       a.A_TEXT,
       a.B_TEXT,
       a.C,
       a.D_TO_E,
       a.F_TEXT,
       a.G,
       a.INTIME,
       case when b.EXIT_TIME is null
            then 'NA'
            else b.EXIT_TIME
       end as EXIT_TIME
FROM tm_A a 
LEFT JOIN tm_B b ON a.ID=b.ID 

說啊

WHERE EXIT_TIME is null

代替

WHERE EXIT_TIME=''

希望它能幫到你......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM