有時候有就是會有比較兩個TABLE兩邊的COLUMN差在哪邊的作業

(像是新舊資料庫的比對,又不能DROP TABLE重新CREATE、只能硬比的時候)

在ORACLE這段就超級方便的啦

利用USER_TABLE_COLUMNS其實都有這些屬性

再把欄位資訊像是在捉OUTER JOIN那樣...很容易就解決...

如果再變化一下也許連COLUMN資料格式、長度都可以被比對

 

雖然不是什麼了不起的方法

但有時還是會用得到...超好用的

 

SQL:

SELECT u1.column_name AS t1_column ,u2.column_name AS t2_column ,
    CASE WHEN u1.column_name IS NULL OR u2.column_name IS NULL
             THEN 'No Match'
         ELSE

             'Match'
         END Match_Flag
    FROM
         (SELECT column_name FROM user_tab_columns WHERE table_name = 'TAB_NAME_1') u1
           FULL OUTER JOIN
         (SELECT column_name FROM user_tab_columns WHERE table_name = 'TAB_NAME_2') u2
    ON u1.column_name = u2.column_name;

結果:

COL1 COL2 MATCH
EXPIREDDATE EXPIREDDATE Match
  KEYDATA No Match
VALDATA   No Match

 

 

創作者介紹
創作者 冰小火的叨叨咻咻 的頭像
hanjay

冰小火的叨叨咻咻

hanjay 發表在 痞客邦 留言(0) 人氣( 3568 )