我有一个包含 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 - 玛莎
cust_lname - 凯恩
cust_alt_add - 空
cust_cell_acode - 210
cust_home_phone - 空
预期结果:(我不希望结果中出现空值列)
cust_id - 826122
cust_fname - 玛莎
cust_lname - 凯恩
cust_cell_acode - 210
最佳答案
你可以做类似的事情
SELECT * FROM Customer WHERE customer_id = 'xyz' AND some_col IS NOT NULL;
或者
SELECT * FROM Customer WHERE customer_id IS NOT NULL
希望有帮助。
编辑
在尝试找到合适的答案后,似乎很少有简单的方法可以做你想做的事情。我认为你最好的办法是使用此 post 中的答案.
尽管问题略有不同,但我认为您可能会发现这些答案很有帮助。对于无法为您提供您正在寻找的答案,我深表歉意。
关于SQL查询仅列出结果中的 'non null'字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025861/