我正在使用Oracle SQL。我有两个场景:
1)找出25列中至少有一列是否为空(可能超过1)
2)或者如果所有25列都不为空
我是否需要为所有25列写入Null条件?
答案 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。如果所有表达式都不为空,它将仅返回非空值。