我们经常遇到这种情况,在两个数据库中分别都有一张表,它们表达的实际上是同样信息数据  但由于建表人不同 字段的名字可能不一样 当另外有人调用它们 由于字段不统一 就会出现问题 由于本人是新手 请教高人指点一二.!.

解决方案 »

  1.   

    ALL_TAB_COLUMNS ... MINUS ...
      

  2.   

    select * from all_tab_columns where table_name = 'ATABNAME'
    里面可以查看表里面的所有字段.
      

  3.   

    all_tab_columns 这也只能查出来表的字段名,比如A对应B,如果去查呀,没有办法吧.
      

  4.   

    select * from all_tab_columns 
    where table_name = 'ATABNAME' 得到要比较的两个表
    循环查找有没有对方表里不存在的比如
    select a.xxxx ,'b表名缺少' as errormsg, 
    from all_tab_columns a
    left outer join all_tab_columns b on a.xxxx=b.xxxx
    and b.table_name='ATABNAME_b' where table_name = 'ATABNAME_a' and b.xxxx is nullunion allselect a.xxxx ,'a表名缺少' as errormsg, 
    from all_tab_columns a
    left outer join all_tab_columns b on a.xxxx=b.xxxx
    and b.table_name='ATABNAME_a' 
    where table_name = 'ATABNAME_b' and b.xxxx is nullxxxx是表字段名的字段,忘了,自己看看吧
      

  5.   

    SELECT 
        T.COLUMN_NAME
        ,COUNT(*) C
    FROM 
        (
            select A.TABLE_NAME,A.COLUMN_NAME from all_tab_columns a where a.TABLE_NAME = 'ALL_TABLES'
            UNION ALL 
            select B.TABLE_NAME,B.COLUMN_NAME from all_tab_columns b where b.TABLE_NAME = 'DBA_TABLES'
        ) T
    GROUP BY T.COLUMN_NAME
    HAVING COUNT(*) >1这是两个表中字段相同的那些字段名称. 
      

  6.   

    select c.TABLE_NAME 表名,c.COLUMN_NAME 列名,c.DATA_TYPE 类型,C.DATA_LENGTH 长度 from (
    select a.COLUMN_NAME,count(0) from (
    select *from all_tab_columns a where a.TABLE_NAME IN  ('TMP_EMAIL', 'TMP_EMAIL1' )) A
    group by a.COLUMN_NAME 
    having count(0)=1) b,all_tab_columns c
    where c.TABLE_NAME IN  ('TMP_EMAIL', 'TMP_EMAIL1' ) and b.COLUMN_NAME=c.COLUMN_NAME