2011-01-20 20 views
2

私は75列のテーブルを持っています。値を持つ列のみを表示するSQL文は何ですか?空の列を非表示

おかげ

+4

そのステートメントはありません** - データの**行**を非表示にすることはできますが、列は非表示にすることができます –

+1

列に値がない場合、その列はなぜですか? –

+1

@Joelこの状況は非常に頻繁です(将来の使用のために列が準備されていますが、使用できないためまだ値が挿入されていません...) – bluish

答えて

2

それは同様の文は(あなたがいない列に対して、行だけの条件フィルタを使用することができますSELECTには)存在しないというのは本当です。しかし、の手続きを書こうとするとよいでしょう。クエリーを使用して、少なくとも1つを含む列がNULL /空の値ではないことを確認する必要があります。この列のリストを取得すると、各列の間にコンマを入れた文字列でそれらを結合し、実行可能な問合せを作成し、必要なものを戻します。

EDIT:私はそれについて考え、私はあなたが手順でこれらのいずれかの条件のもとでそれを行うことができると思います。

  • は、プロシージャ内で動的にカラム名を取得する方法を見つけること、つまり、 メタデータ(私はそれについて聞いたことがないが、私は手続きに新たなんだ)

  • または打ち(一般性を失うこと)すべての列名

あなたのDBMSのサポートアレイの配列、保存した場合手続きの内側の列名を収集する(またはCのようなプログラミング言語でプロシージャを作成)、およびそれらのループ、SELECTを毎回作り、確認することができそれが空の列であるかどうか。少なくとも1つの値が含まれている場合は、列名がコンマで区切られた文字列に連結します。。最後に、空ではない列だけを使用してクエリを作成できます。

ストアドプロシージャの代わりに、より柔軟性に対処できるプログラム(Javaなど)を書くこともできます。

*あなたがNULL値をチェックした場合、それはシンプルになりますが、あなたは空の値をチェックする場合は、各列データ型 ...データ型を持つ別の配列で管理する必要がありますか?

0

SELECTステートメントを作成し、表示するCOLUMNSを定義し、そのQUERYをVIEWとして保存することをお勧めします。

これにより、そのクエリを実行するたびに列名を入力する手間が省けます。

コメント内にmarc_sが指摘しているように、データの列を非表示にするselect文はありません。

+1

リストは動的である必要がありますが、ビューの作成時に空の列が必ずしもそのようにとどまるわけではありません。私はなぜこれがいつも必要になるだろうと想像することはできません。 –

+0

@マーティン:結果を見るときに特定の列を見たくないのでOPが列を隠すことを問い合わせているという私の答えに仮定があります。そして彼はすでに、彼が結果を見るときに隠す/したくない列を知っています。 – VoodooChild

0

これを行うために事前解析を行い、動的に文を作成できますが、これはSQLパフォーマンスの観点からすると非常に非効率的です。あなたがしようとしていることに対して強く助言するでしょうか。

関連する問題