oracle數據庫自帶表sql轉換成db2數據庫自帶表sql

需求:

1、要求統計oracle數據庫某個用戶下所有的表數據,並且查詢的結果是,拼接了這些表結構的查詢sql語句。

2、將第一條oracle數據庫語句轉換成db2數據庫語句

 

一、oracle數據庫sql語句

OWNER 當前登錄用戶
DATA_LENGTH 字段長度
data_type 字段類型
column_name 字段名
table_name 表名
SELECT 'SELECT to_char(' || T.COLUMN_NAME || ') AS RESULT,'''||tt.OWNER||''' as 用戶 , '''|| T.TABLE_NAME || ''' as 表名 , ''' ||
       T.COLUMN_NAME || ''' as 列名 FROM ' || TT.OWNER || '.' || T.TABLE_NAME ||
       ' WHERE ' || T.COLUMN_NAME || ' LIKE ''%萬%'' or  '
       ||  T.COLUMN_NAME ||' like ''%萬記%'' or ' 
       ||  T.COLUMN_NAME ||' like ''%萬長%'' or '
       ||  T.COLUMN_NAME ||' like ''%良%'' union all '
       ,tt.OWNER,t.TABLE_NAME, t.COLUMN_NAME,t.DATA_LENGTH,t.DATA_TYPE
  FROM USER_TAB_COLS T
  INNER JOIN ALL_TABLES TT
    ON TT.TABLE_NAME = T.TABLE_NAME
   AND TT.OWNER NOT IN ('SYS', 'SYSTEM', 'MDSYS', 'XDB') AND tt.OWNER IS NOT NULL 
 WHERE (T.DATA_TYPE LIKE '%VARCHAR%'
    OR T.DATA_TYPE LIKE '%CLOB%')
    and t.COLUMN_NAME not in('ID','CODE','BTM','STATUS','STATE')
    AND (t.COLUMN_NAME not like '%ID' and t.COLUMN_NAME not like '%CODE' and t.COLUMN_NAME not like '%STATE')
    AND T.DATA_LENGTH > 2
    and t.DATA_LENGTH < 4000
    and tt.OWNER ='GZYT'
    order by t.TABLE_NAME , t.COLUMN_NAME;

二、已經轉成db2數據庫sql語句

SYSIBM.SYSCOLUMNS 表字段說明:

NAME

TBNAME

COLTYPE

LENGTH

NULLS

CREATOR TYPE

字段名稱

表名稱

字段類型

字段指定長短

是否可以爲空

數據庫對象的創建者 表用T表示;視圖用V表示
SELECT 'SELECT char(' || t.NAME || ') AS RESULT,'''||tt.CREATOR||''' as 用戶 , '''|| t.TBNAME || ''' as 表名 , ''' ||
       t.NAME || ''' as 列名 FROM ' || TT.CREATOR || '.' || t.TBNAME ||
       ' WHERE ' || t.NAME || ' LIKE ''%萬良%'' or  '
       ||  t.NAME ||' like ''%萬記%'' or ' 
       ||  t.NAME ||' like ''%萬長%'' or '
       ||  t.NAME ||' like ''%良%'' union all '
       ,tt.CREATOR,t.TBNAME, t.NAME,T.LENGTH,t.COLTYPE
  FROM sysibm.syscolumns T
  INNER JOIN sysibm.SYSTABLES TT
    ON TT.NAME = T.TBNAME
    AND tt.CREATOR IS NOT NULL 
 WHERE (T.COLTYPE LIKE '%VARCHAR%'
    OR T.COLTYPE LIKE '%CLOB%')
    and t.NAME not in('ID','CODE','BTM','STATUS','STATE')
    AND (t.NAME not like '%ID' and t.NAME not like '%CODE' and t.NAME not like '%STATE')
    AND T.LENGTH > 2
    and T.LENGTH < 4000
    and tt.CREATOR ='FASP' 
    and tt.TYPE='T'
    order by t.TBNAME , t.NAME;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章