次のコードを見てください
public List<String> getNames()
{
List<String> names = new ArrayList();
try
{
createConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select NULLIF(names,' '),NULLIF(middleName,' '),NULLIF(lastName,' ') from PhoneData order by names asc");
while(rs.next())
{
String fullName = rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3);
names.add(fullName);
}
return names;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
finally
{
closeConnection();
}
}
Apache Derby の組み込みバージョンを使用しています。
ここでは、姓、名、ミドルネームの 3 つの項目を取得しています。いずれかの項目が null の場合、空白で埋めようとしています。しかし、これを実行してコンボボックスに追加すると、null 値が空白に置き換えられていないことがわかります!!! null 値はすべて「null」として表示されます。たとえば、
FirstName = "ジョン"、MiddleName=""、LastName="ラクスター"
ご覧のとおり、MiddleName は null です。私が期待しているのは
「ジョン・ラクスター」
私が得るのは「John null Laxter」です!!!. どうしてこれなの?助けてください!MS SQLServer を使用している場合、この問題は発生していません (NULLIF は isNull() です)。ここで何が問題なのですか?助けてください!!