各レコードには 100 個のフィールドがあり、値を持つフィールドはごくわずかで、多くは NULL です。非 NULL 値を持つフィールドを持つレコードを表示したい場合、どうすればよいですか?
例:
Table1 には 100 個のフィールドがあり、テーブル内の 1 つのレコードには 5 つのフィールドがあり、非 NULL 値、95 個の NULL 値があります。その記録を表示したい。
100 フィールドの NULL を持つ別のレコード、そのレコードを表示したくありません。
各レコードには 100 個のフィールドがあり、値を持つフィールドはごくわずかで、多くは NULL です。非 NULL 値を持つフィールドを持つレコードを表示したい場合、どうすればよいですか?
例:
Table1 には 100 個のフィールドがあり、テーブル内の 1 つのレコードには 5 つのフィールドがあり、非 NULL 値、95 個の NULL 値があります。その記録を表示したい。
100 フィールドの NULL を持つ別のレコード、そのレコードを表示したくありません。
すべての列が ではないレコードが必要です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 番目の解決策では、すべての列が同じデータ型を持つ必要があることに注意してください。そうでない場合は、追加のキャストが必要になる場合があります。