如何將sql查詢出的列名用注釋代替?


如何將sql查詢出的列名用注釋代替?

大家正常的工作的時候,會有這樣的要求,客戶想要看下原始數據,但是呢。前台導出又麻煩,這時候只能從數據庫拷貝出來一份。但是呢,數據庫里面的字段客戶又看不明白,只能用數據庫里面的注釋。但是這時候,如果要求很多張表,難道我們要一個個復制嗎?這也太tm蠢了。

1 查看我們表

select * from user_col_comments where table_name='TNAME';

更新時間:2020/4/16
今天想弄下表信息,奈何一直顯示不出來,后來發現,table_name的表名,必須要大寫,必須要大寫!!!

2 寫上函數

create or replace function f_colcom(tname in varchar2) return varchar2 is
  Result  varchar2(400);
    tsql varchar2(400);
begin
  declare
     cursor c_job is
     select column_name, comments
         from user_col_comments
         where upper(table_name) = upper(tname);
         c_row c_job%rowtype;
   begin
     for c_row in c_job loop
       tsql := tsql || c_row.column_name||' "'||c_row.comments||'",';
      end loop;
       tsql := substr(tsql,1,length(tsql)-1);
        tsql := 'select '||tsql||'  from '||tname||';';
    end;
    result := tsql;
   return(Result);

  end f_colcom;
    /*sql查詢出的列名轉換其注釋  2019/12/09   by 迷途的小碼農 */

3 查詢表字段

emmm。出錯了。報錯:ORA-06502: PL/SQL: 數字或值錯誤 : 字符串緩沖區太小

仔細看了下。函數中定義的變量值太小,加大它的范圍即可。

咱也不知道需要多大,就直接給個最大的吧。4000

運行后可用:

將查詢結果執行一遍。

查詢之后就可以了,字段名稱為注釋

4 Excel函數VLOOKUP(函數)

函數的4個字段含義為:(需要查找的字段,在哪里查找,輸出第幾列,查找模式)

我拷貝下來的sql數據為下:

如果這么給客戶看的話,客戶是看不懂字段的意思的,所以我們需要用函數,將注釋填寫上去。

我們查詢出這張表的注釋和字段,復制到Excel里面sheet4下,如下:

接着我們就需要用VLOOKUP 函數了。
我寫的如下:

VLOOKUP(R1,Sheet4!1:1048576,2,FALSE) -->(需要查找的字段,在哪里查找,輸出第幾列,查找模式)

需要查找的字段:R1
在哪里查找:就在我復制下來的sheet4里面
輸出第幾列:將第二列的數據引用過來 填寫2
查找模式:有true和false 。true是模糊,false是精確。
這樣下來,就可以直接替換了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM