0

如何从结果集或数据列表中删除空列?

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

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

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

提前致谢。

4

4 回答 4

1

不。你告诉 SQL 你想要查询中的哪些列,它会为你提供你要求的所有列。

于 2012-05-07T15:00:00.447 回答
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如果没有地址,这将返回。您也可以在其他列上使用它。

于 2012-05-07T14:52:51.440 回答
0

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

于 2012-05-07T14:58:50.560 回答
0

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

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

于 2012-05-07T15:00:12.477 回答