0

結果セットまたはデータリストから空の列を削除するにはどうすればよいですか?

例:クエリを実行すると、SQLが結果セットを返します

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

結果セットの空の列「アドレス」を削除するにはどうすればよいですか?

前もって感謝します。

4

4 に答える 4

1

いいえ。クエリで必要な列を SQL に指示すると、要求したすべての列が返されます。

于 2012-05-07T15:00:00.447 に答える
0

Address が常に空の場合、または必須でない場合は、ResultSet. たとえば、クエリは次のようになります...

SELECT Name, Age, Telephone FROM Table;

それ以外の場合、一部のエントリに Address が含まれている場合、 でそれらをループするときに空の値を検出する必要があります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

常に null の場合、クエリから列を削除することはできませんが、マップ先のオブジェクトからすべての NULL 値を除外できますResultSet。(あなたはResultSet永続層から抜け出しませんよね?)

于 2012-05-07T14:58:50.560 に答える
0

列が常に空の場合は、他の人が指摘したように、クエリの SELECT 句から削除するだけです。「SELECT *」を使用している場合は、使用しないでください。それは悪い習慣です。あらゆる種類の未使用データを処理している可能性があります。SELECT * が不要な 5 バイト フィールドを 1 つ選択したとしても、大したことではないと思います。しかし、それが現在行っていることのすべてであっても、来週、あなたまたは他の誰かが 50k BLOB フィールドをレコードに追加し、必要な 50 バイトを取得するために、不要な 50k も処理している可能性があります。

ResultSet を取得した後、列が常に空白または null であることがわかった場合は、どうすればよいでしょうか? これを発見するにはデータを読む必要があります。列が ResultSet 内にあるという事実は、画面に表示するものについて何も強制しません。表示から列を削除する場合は、コードでこれを行うことができます。

于 2012-05-07T15:00:12.477 に答える