Java:删除Resultset中的空列

时间:2012-05-07 14:33:53

标签: java

如何从Resultsets或DataList中删除空列?

例如:我运行一个查询,然后SQL返回一个Resultset

Name    Age    Address    Telephone
----    ---    -------    ---------
Zed      23               12345456
Charlo   25               53232323

如何删除结果集中的空列“地址”?

提前致谢。

4 个答案:

答案 0 :(得分:1)

没有。您告诉SQL在查询中需要哪些列,它会为您提供所需的所有列。

答案 1 :(得分:0)

如果地址始终为空,或者不需要,则只需更改生成ResultSet的查询。例如,您的查询将类似于......

SELECT Name, Age, Telephone FROM Table;

否则,如果某些条目具有地址,则在ResultSet中循环显示空值时,需要检测空值。

您还可以将查询更改为仅返回带有地址的结果,例如此...

SELECT Name, Age, Address, Telephone FROM Table WHERE Address IS NOT NULL;

您无法预先知道整个列是否为空 - 您必须遍历ResultSet中的每个条目以检测它,或者写一个这样的计数查询......

SELECT COUNT(Address) FROM Table WHERE Address IS NOT NULL;

如果没有地址,这将返回0。您也可以在其他列上使用它。

答案 2 :(得分:0)

如果列始终为null,则无法从查询中删除该列,但您可以从映射ResultSet的对象中排除所有NULL值。 (你不会将ResultSet从持久层传递出去,对吗?)

答案 3 :(得分:0)

如果列始终为空,那么,正如其他人所指出的那样,只需将其从查询的SELECT子句中删除即可。如果您使用“SELECT *”,请不要。这是一个不好的做法。您可以处理各种未使用的数据。如果SELECT *选择了一个不必要的5字节字段,我认为没什么大不了的。但即使这就是它现在所做的一切,下周你或其他人可能会在记录中添加一个50k的BLOB字段,然后获得你需要的50个字节,你也需要处理你不需要的50k。

如果您的意思是在获得ResultSet之后发现该列始终为空或为空,那么什么?您必须阅读数据才能发现这一点。列在ResultSet中的事实不会强制显示您在屏幕上显示的内容。如果要从显示中删除列,可以在代码中执行此操作。