如何从Resultsets或DataList中删除空列?
例如:我运行一个查询,然后SQL返回一个Resultset
Name Age Address Telephone
---- --- ------- ---------
Zed 23 12345456
Charlo 25 53232323
如何删除结果集中的空列“地址”?
提前致谢。
答案 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中的事实不会强制显示您在屏幕上显示的内容。如果要从显示中删除列,可以在代码中执行此操作。