0
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”以及显示值的位置

4

2 回答 2

2

如果要选择列所在的结果,则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操作员而不是=

usingEXIT_TIME=''将与EXIT_TIME空字符串进行比较,但不是null

如果您想要所有不在 null的记录,EXIT_TIME您可以使用

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 
于 2012-06-18T13:12:17.007 回答
0

说啊

WHERE EXIT_TIME is null

代替

WHERE EXIT_TIME=''

希望对你有帮助...

于 2012-06-18T13:12:39.910 回答