2

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

前任:

select * from customer where customer_id='xyz';

customer_id是独一无二的。

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

我总是只对非空字段感兴趣。

SQL中有没有办法只列出那些非空的列?

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

简要示例:

询问:

select * from customer where cust_id='826122';

实际结果:

cust_id - 826122

cust_fname - 玛莎

cust_lname - 凯恩

cust_alt_add - 空

cust_cell_acode - 210

cust_home_phone - 空

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

cust_id - 826122

cust_fname - 玛莎

cust_lname - 凯恩

cust_cell_acode - 210

4

1 回答 1

3

你可以做类似的事情

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

或者

SELECT * FROM Customer WHERE customer_id IS NOT NULL

希望有帮助。

编辑

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

尽管问题略有不同,但我认为您可能会发现这些答案很有帮助。我很抱歉不能给你你正在寻找的答案。

于 2013-04-15T22:44:10.310 回答