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

SQL查询仅列出结果中的“非空”字段,sql,oracle11g,oracle-sqldeveloper,Sql,Oracle11g,Oracle Sqldeveloper,我有一个70多列的表格。我经常在表格中搜索一行 例: 客户id是唯一的 结果,很可能会有30到40列具有空值 我总是只对非空字段感兴趣 SQL中是否有办法只列出那些非空的列 PS:不幸的是,对于所有客户,非空字段将不是相同的字段。比如说,如果“客户A”在“列R”中为null,“客户B”在该列中可能有一个有效值。最后,我的查询在任何给定时间都只关注一个客户 简要示例: 查询: select * from customer where cust_id='826122'; 实际结果: 客户识别号-8

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

例:

客户id是唯一的

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

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

SQL中是否有办法只列出那些非空的列

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

简要示例:

查询:

select * from customer where cust_id='826122';
实际结果:

客户识别号-826122

客户名称-玛莎

客户名称-凯恩

cust_alt_add-空

客户单元代码-210

客户家庭电话-空

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

客户识别号-826122

客户名称-玛莎

客户名称-凯恩


cust\u cell\u acode-210

您可以执行以下操作

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

希望有帮助

编辑

在试图找到一个合适的答案后,似乎很少有简单的方法来做你想做的事情。我认为你最好的办法是使用这个答案


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

向我们展示您的数据示例以及您希望查询输出的内容。有没有办法。。。。答案是肯定的:一种方法是编写一个您调用的包装程序。它获得SQL迭代的结果,尽管每个列都使用从CTE中选择的具有数据的列构建一个CTE并返回该结果集。为什么有人想这么做。。。由于您更改了请求的结果,Select*不再执行*操作。。。我无法理解。如果您是从.net、java、coldfusion或类似的工具运行此查询,您最好使用应用程序代码来实现您的目标。欢迎使用堆栈溢出!请通过添加适当的标记Oracle、SQL Server、MySQL等来指定目标RDBMS。。可能有一些答案利用了并非普遍支持的语言或产品功能。此外,通过使用特定的RDBMS标记,您的问题可能会得到更适合回答它的人的注意。我现在添加了标记,还添加了一个简短的示例。这不是这里所需要的。我只是假设问题是粗体文本,如果我的假设不正确,请纠正我,我将调整我的答案。对于给您带来的不便,我深表歉意。@David:谢谢您的回复,但我实际上是在寻求帮助,以便从结果中筛选出所有非空列。我不知道哪些是空的。我将编辑我的问题,添加一个简短的例子。@Ramnath啊,是的,我明白了,让我编辑一下,给你一个更好的答案。
SELECT * FROM Customer WHERE customer_id = 'xyz' AND some_col IS NOT NULL;
SELECT * FROM Customer WHERE customer_id IS NOT NULL