2016-07-28 11 views
0

で満たされているかどうかを確認私はchecking if a row merely existsのための質問を見てきました、しかし、私は、すべてのデータが記入されてかどうかについて(SOまたは他の場所に)何かを見ていないPostgreSQLの - 行は完全に

私はSELECT true FROM myTable WHERE name='myRow' AND * IS NOT NULL;がうまくいくことを望んでいましたが、そうではありません。

アスタリスクの代わりにどのワイルドカードが使用できますか?クエリごとに各列名を個別に入れなければなりませんか?

答えて

3

あなたは確かに全体の行を参照するが、*を使用していないが、テーブル名使用してすることができます行のすべて列がない場合は

SELECT true 
FROM myTable 
WHERE name='myRow' 
    AND myTable IS NOT NULL; 

を行の値にIS NOT NULLオペレーターがtrueを返しますヌル。

次の文:

with mytable (col1, col2, col3) as (
values 
    (1,null,null), 
    (null,1,null), 
    (null,null,1), 
    (1,1,1) 
) 
select * 
from mytable 
where mytable is not null; 

が返されます:ところで

col1 | col2 | col3 
-----+------+----- 
    1 | 1 | 1 

反対。真実ではない。 where mytable is nullは、行が定義されていないため、何も返されません(存在しないため)。少なくとも1つの列がnullであるあなたがwhere not (mytable is not null)

に同様の問題を使用する必要があります行を見つけるには、ここで説明されていますhttps://dba.stackexchange.com/q/143959/1822

+0

ありがとうございました!あなたの答えはとても有益でした。 –

関連する問題