SQL查询仅列出结果中的“非空”字段

时间:2013-04-15 22:42:26

标签: sql oracle11g oracle-sqldeveloper

我有一张70多列的表格。我经常在桌子上搜索一行。

例如:

select * from customer where customer_id='xyz';

customer_id是唯一的。

在结果中,很可能有30到40列具有空值。

我一直只对非空字段感兴趣。

SQL中是否有一种方法只列出那些非空的列?

PS:不幸的是,非空字段对于所有客户都不是相同的字段。比如说,如果“客户A”在“列R”中为空,则“客户B”可能在该列中具有有效值。最后,我的查询将始终只关注任何给定时间的1位客户。

简要示例:

查询:

select * from customer where cust_id='826122';

实际结果:

cust_id - 826122

cust_fname - martha

cust_lname - kane

cust_alt_add - null

cust_cell_acode - 210

cust_home_phone - null

预期结果:(我不希望具有空值的列出现在我的结果中)

cust_id - 826122

cust_fname - martha

cust_lname - kane

cust_cell_acode - 210

1 个答案:

答案 0 :(得分:3)

您可以执行类似

的操作
SELECT * FROM Customer WHERE customer_id = 'xyz' AND some_col IS NOT NULL;

或者

SELECT * FROM Customer WHERE customer_id IS NOT NULL

希望有所帮助。

修改

在尝试找到合适的答案之后,似乎很少有简单的方法可以做你想做的事。我认为你最好的镜头是使用这个post的答案。

虽然问题略有不同,但我认为您可能会发现这些答案很有帮助。我为没有能够给你你想要的答案而道歉。