如何找出oracle中的空值(25列)

时间:2016-01-21 18:24:00

标签: sql oracle

我正在使用Oracle SQL。我有两个场景:

1)找出25列中至少有一列是否为空(可能超过1)

2)或者如果所有25列都不为空

我是否需要为所有25列写入Null条件?

3 个答案:

答案 0 :(得分:0)

Coalesce应该有所帮助,例如:

SELECT CASE WHEN COALESCE(field1, field2, field3...) is NULL THEN 'AllNULL'
ELSE 'OneOrMoreNotNULL' END as 'NULLcontent' FROM tbl

答案 1 :(得分:0)

尝试这样的事情:

SELECT CASE LENGTH( SUBSTR(COL_1, 1, 1) ||
                    SUBSTR(COL_2, 1, 1) ||  
                    ...                 ||
                    SUBSTR(COL_25, 1, 1)                     
                   )
         WHEN 25 THEN 'ALL NOT NULL'
         WHEN 24 THEN '1 COLUMN NULL'
         ...
     END CASE
FROM YOUR_TABLE

如果您的列与varchar不同,则需要将其转换为varchar以使用此方法

答案 2 :(得分:0)

您可以使用GREATEST(或LEAST)来测试列表中的任何项是否为空(对于一致数据类型的表达式)。

select greatest(owner, object_name, to_char(object_id), to_char(data_object_id)) x, 
       owner, object_name, object_id, data_object_id 
from all_objects where object_name in ('DUAL');

如果提供给GREATEST的表达式列表中的任何值为null,则返回值将为null。如果所有表达式都不为空,它将仅返回非空值。