oracle 数据库添加查询,在 sql 查询中添加过滤器(ORACLE 数据库)。

我需要列出表,colomns和他们的数据类型,我用这个。

select TABLE_NAME, COLUMN_NAME, DATA_TYPE from dba_tab_columns order by TABLE_NAME;

问题是数据库太大,我只需要2000个特定的表columndatatype。

例如:(我有2000行这样的表名是非常随机的,并且在commun中没有任何东西,所以列名也是如此)

TABLE Column SCHEMA

DMT_AAAAAAA C1111 ANT_A1

DMT_AAAAAAA C1111 ANT_A2

BBBBBBBB A4444 ANT_A3

JHD6365 H5525 ZUGRU

WRK679 C3020 MUSTSU

TDG5378 C66739 SHGUY

我试着用这个查询来过滤模式。

select TABLE_NAME, COLUMN_NAME, DATA_TYPE from dba_tab_columns where OWNER in ('ANT_A1','ANT_A2','ANT_A1','ZUGRU','MUSTSU','SHGUY') order by TABLE_NAME;

现在的问题是,它列出了所有的列,甚至是我不需要的列。

有办法只过滤掉需要的行吗? 预期的输出。

|table name | column | data type|

DMT_AAAAAAA C1111 NUMBER

DMT_AAAAAAA C1111 VARCHAR

BBBBBBBB A4444 NUMBER

JHD6365 H5525 VARCHAR

WRK679 C3020 VARCHAR

TDG5378 C66739 VARCHAR

谢谢你。

2

投票

如果你想在不同的模式和表中显示某些列的信息,请在一个 IN 子句使用元组。

select owner, table_name, column_name, data_type

from dba_tab_columns

where (owner, table_name, column_name) in

(

('DMT_AAAAAAA', 'C1111', 'ANT_A1'),

('DMT_AAAAAAA', 'C1111', 'ANT_A2'),

('BBBBBBBB', 'A4444', 'ANT_A3'),

('JHD6365', 'H5525', 'ZUGRU'),

('WRK679', 'C3020', 'MUSTSU'),

('TDG5378', 'C66739', 'SHGUY')

)

order by owner, table_name, column_name;

1

投票

检查以下内容是否足够。(我只考虑你的输出)

select Distinct TABLE_NAME, COLUMN_NAME, DATA_TYPE from dba_tab_columns

如果你不想要这些表格,'BBBBBBB'和'WRK679'。

把这些内容放到一个表中(比如说tblExclude),然后你可以使用下面的方法

select Distinct TABLE_NAME, COLUMN_NAME, DATA_TYPE from dba_tab_columns a

Left Join tblExclude b on a.TABLE_NAME = b.TABLE_NAME

Where b.TABLE_NAME is null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值