请查看以下代码
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”。例如,
FirstName =“John”,MiddleName =“”,LastName =“Laxter”
如您所见,MiddleName为null。我期待的是
“John Laxter”
我得到的是“John null Laxter”!!!为什么是这样?请帮忙!当我使用MS SQLServer时,我没有遇到过这个问题(然后NULLIF是isNull())。这有什么不对?请帮忙!!
答案 0 :(得分:3)
更好地使用COALESCE
SELECT COALESCE(names,' '),...
答案 1 :(得分:2)
试试这个:
select
coalesce(names,' '),
coalesce(middleName,' '),
coalesce(lastName,' ')
from PhoneData
order by names asc
答案 2 :(得分:1)
select
coalesce(names,' '),
coalesce(middleName,' '),
coalesce(lastName,' ')
from PhoneData
order by names asc