首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义SQL查询

自定义SQL查询
EN

Stack Overflow用户
提问于 2014-07-04 16:48:36
回答 2查看 91关注 0票数 0

我需要在哪里动态地创建一个表(根据创建此表的过程中的输入参数,列数可能会发生变化),表中的数据如下所示。

代码语言:javascript
运行
复制
PK col1 col2 col3
A  null 1-2  3-4
B  null null  4-5
C  null 5-6  null

现在的要求是,我只想提取列,其中至少应该有1条记录,没有null,并将整个数据放入文件中。我的输出应该如下所示(col1从输出中流出,因为它都是空的)。

代码语言:javascript
运行
复制
PK col2 col3 
A  1-2  3-4
B  null  4-5
C  5-6  null

有人能提供任何线索来达到这个目的吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-16 11:14:57

我使用了来自all_tab_cols的all_tab_cols,并根据我的需求取得了效果。谢谢。

票数 0
EN

Stack Overflow用户

发布于 2014-07-05 03:30:12

我怀疑这不是很有效,但是您可以使用COUNT()来确定列中是否只有null,因为COUNT(column_here)只会为每个非空值添加1。因此,如果计数为零,则该列仅为NULL。

然后,可以将其组合到一个查询中,生成一个有效的select语句,然后立即执行该语句(当然要小心避免sql注入)。

总之,这里有一个例子:

代码语言:javascript
运行
复制
select
     'select '
   || substr((
        select
                 case when count(COL1) > 0 then ',col1' else '' end
              || case when count(COL2) > 0 then ',col2' else '' end
              || case when count(COL3) > 0 then ',col3' else '' end
        from a_table
       ),2,8000)
   || ' from '
   || ' a_table'
   as sql_string
from dual
;

请参阅这只小提琴

上述结果如下:

代码语言:javascript
运行
复制
|                     SQL_STRING |
|--------------------------------|
| select col2,col3 from  a_table |
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24578400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档