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'并且有值显示
答案 0 :(得分: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
运算符而不是=
使用EXIT_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
答案 1 :(得分:0)
说完
WHERE EXIT_TIME is null
而不是
WHERE EXIT_TIME=''
希望它对你有所帮助......