Sql 打印具有空值的列名
我正在创建一个程序,我需要这个部分。 表格Sql 打印具有空值的列名,sql,oracle,Sql,Oracle,我正在创建一个程序,我需要这个部分。 表格 col1 col2 col3 a null b null d null c e null 输出 col1 col2 col3 result a null b col2 null d null col1,col3 c e null col3 我们可以使用case语句吗?您可以使用case:
col1 col2 col3
a null b
null d null
c e null
输出
col1 col2 col3 result
a null b col2
null d null col1,col3
c e null col3
我们可以使用case语句吗?您可以使用
case
:
select col1, col2, col3,
substr( ( (case when col1 is null then ',col1' else '' end) ||
(case when col2 is null then ',col2' else '' end) ||
(case when col3 is null then ',col3' else '' end)
), 2)
from t;
严格来说,
else'
是多余的,因为Oracle将'
视为NULL
值。但是,我喜欢包含它,因为这种行为与大多数数据库不同。您还可以使用decode,如下所示
select t.*,
rtrim(decode(col1,null,'col1,',null)
|| decode(col2,null,'col2,',null)
|| decode(col3,null,'col3,',null),',') as result
from t;
谢谢林诺夫,我来试试!!我假设
substr
将“更正”尾随逗号,但是substr(输入,2)
将切掉第一个字符,而不是最后一个字符。也许您的意思是”、col1'
等。您可以使用RTRIM函数而不是SUBSTR来删除最后一个逗号,而不是'col1'
。@mathguy。谢谢我把逗号放错地方了。@mathguy。。。达米思……林诺夫。。。谢谢:)