2016-07-07 11 views
1

テーブルを参照するクエリを作成し、ALL NULL行を持つすべての列を選択する必要があります。SQL - NULL列のみを選択する

私は「(各カラム名)を選択し、」言わなければならないことを好むのではなく、(行がすべてNULLです)。

私が知っているWHERE(全体のテーブルから、これらの列)を選択し、」言う

CASE文とWHEN文を使用していますが、select文で列を特に参照する必要があることを理解しておきます。このクエリは多くの異なるディメンションと列名を持つ多くの異なる表で使用します。私はのVerticaのDBでヒキガエルでSQLを使用してい

これは私のテーブルはようになり何です。

TABLE_with_null

このテーブルには、私は、クエリを必要とする列が含まれています。私が照会する必要がある列は、 "owner_id"、TYPE_NAME、NULLABLEなどではありません。この表の各行は、実際にそのような多くの値を持つ列であり、照会を実行するために必要な値です。

'単純に' put:列にすべてのNULL行がある場合は、それを特定または選択する必要があります。

何か提案がありますか? %Solved ^^^%

この例では列をループする方法を見つけましたが、私の研究にもかかわらず、私はまだそれをすべて理解できていません。

など:col_nameとcolumn_nameの違いは? FROMステートメントとWHEREのテキストと同じです。それらは両方のテーブル名ではありませんか?次に、found_rows()は何を表していますか?

DECLARE col_names CURSOR FOR 
    SELECT column_name 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' 
    ORDER BY ordinal_position; 

select FOUND_ROWS() into num_rows; 

SET i = 1; 
the_loop: LOOP 

    IF i > num_rows THEN 
     CLOSE col_names; 
     LEAVE the_loop; 
    END IF; 

    FETCH col_names 
    INTO col_name;  

    //do stuff 

    SET i = i + 1; 
END LOOP the_loop; 
+3

関数を呼び出す私たちにいくつかのサンプル・テーブル・データと予想される結果を表示します! – jarlh

+0

あなたは本当にすべての単一の列がnullの行を含むテーブルを持っていますか?だから、テーブルに主キーはありませんか? – Boneist

+0

提供されたイメージでは、例は「備考」(列のすべてのヌル値)です。あなたは何を得る必要があるのでしょうか?すべての非NULL列? – apokryfos

答えて

0

すべての列にNULL値を持つ列を特定し、すべての列を入力したくないと分かりますか?

は厥もしそうなら、これは私がどうなるかです: --FYIを::

1)入力パラメータとして受け取り、ない機能を構築し、これは擬似コードです。私は、列名をループ)

select sum(
      case when CAST(<column_name> as varchar(5200)) is not null then 1 else 0 end --5200 seems to be your longer column 
     ) 
from YOUR_TABLE 
--the idea is to cast the column as anythig; if it is null, it gets a 0. 
--If the sum across the rows is 0, it means that all the rows are null 

2正しい構文を取得するために、ここでのMySQLを持っていけないと

関連する問題