1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > oracle中怎么算奇数 oracle - 如何在oracle中获取奇数列 - SO中文参考 - www.soinside.com...

oracle中怎么算奇数 oracle - 如何在oracle中获取奇数列 - SO中文参考 - www.soinside.com...

时间:2021-06-18 16:07:52

相关推荐

oracle中怎么算奇数 oracle - 如何在oracle中获取奇数列 - SO中文参考 - www.soinside.com...

这不能简单地完成,但是可以使用Oracle数据字典和一些动态SQL。

要找出奇数列,您需要查看ALL_TAB_COLUMNS视图。列COLUMN_ID对列1,2,3进行排序。因此,这将在SCOTT.EMP表中找到所有奇数列:select column_name, column_id

from all_tab_columns

where owner = 'SCOTT'

and table_name = 'EMP'

and mod(column_id,2) = 1

order by column_id;

这将返回类似:COLUMN_NAME COLUMN_ID

----------- ---------

EMPNO 1

JOB 3

HIREDATE 5

COMM 7

我们可以使用LISTAGG函数将其制成逗号分隔的列表:select listagg(column_name,',') within group (order by column_id) as result

from user_tab_columns

where table_name = 'EMP'

and mod(column_id,2) = 1;

RESULT

------

EMPNO,JOB,HIREDATE,COMM

现在我们可以添加到该SQL以生成所需的select语句:select 'select ' || listagg(column_name,',') within group (order by column_id) || ' from ' || table_name as sql

from user_tab_columns

where table_name = 'EMP'

and mod(column_id,2) = 1

group by table_name;

SQL

---

select EMPNO,JOB,HIREDATE,COMM from EMP

((请注意,我必须添加group by子句,因为LISTAGG不会聚合table_name)。

您可以在某些PL / SQL代码中使用该SQL来填充变量v_sql,然后使用DBMS_SQL package运行它。但这本身就是一个复杂的主题,我在这里不再赘述。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。