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'の2つのテーブルから値を取得したいという上記のコードがありますが、テーブル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そのため、代わりに演算子が必要です=

usingは空の文字列EXIT_TIME=''と比較されますが、そうではありませんEXIT_TIMEnull

含まれていない すべてのレコードが必要な場合は、使用できます nullEXIT_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 に答える