0

各レコードには 100 個のフィールドがあり、値を持つフィールドはごくわずかで、多くは NULL です。非 NULL 値を持つフィールドを持つレコードを表示したい場合、どうすればよいですか?

例:

  1. Table1 には 100 個のフィールドがあり、テーブル内の 1 つのレコードには 5 つのフィールドがあり、非 NULL 値、95 個の NULL 値があります。その記録を表示したい。

  2. 100 フィールドの NULL を持つ別のレコード、そのレコードを表示したくありません。

4

1 に答える 1

1

すべての列が ではないレコードが必要ですnull。列名を列挙する必要があります。最も単純な解決策はwhere、次のような長い句です。

select *
from mytable 
where col1 is not null or col2 is not null or ... or colN is not null;

別の方法として横結合があります。

select t.*
from mytable
cross apply (
    select count(col) cnt
    from (values (col1), (col2), ... (colN)) as x(col)
) x
where x.cnt > 0

2 番目の解決策では、すべての列が同じデータ型を持つ必要があることに注意してください。そうでない場合は、追加のキャストが必要になる場合があります。

于 2020-08-31T14:44:52.723 に答える