Mysql如何代替vlookup函数_如何将sql查询出的列名用注释代替?(vlookup函数)

如何将sql查询出的列名用注释代替?

大家正常的工作的时候,会有这样的要求,客户想要看下原始数据,但是呢。前台导出又麻烦,这时候只能从数据库拷贝出来一份。但是呢,数据库里面的字段客户又看不明白,只能用数据库里面的注释。但是这时候,如果要求很多张表,难道我们要一个个复制吗?这也太tm蠢了。

1 查看我们表

select * from user_col_comments where table_name='TNAME';

更新时间:2020/4/16

今天想弄下表信息,奈何一直显示不出来,后来发现,table_name的表名,必须要大写,必须要大写!!!

740e54e49276d261df65a8a77aaf4d8f.png

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 查询表字段

c70621dc17ca7c16ab2608ace3453929.png

emmm。出错了。报错:ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

仔细看了下。函数中定义的变量值太小,加大它的范围即可。

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

570db15e8917eec8cdf9820c31a10981.png

运行后可用:

b8cda4e16503a1559b217c5608faac92.png

将查询结果执行一遍。

查询之后就可以了,字段名称为注释

4 Excel函数VLOOKUP(函数)

函数的4个字段含义为:(需要查找的字段,在哪里查找,输出第几列,查找模式)

我拷贝下来的sql数据为下:

2945a42e664a5d911c03170930c51f25.png

如果这么给客户看的话,客户是看不懂字段的意思的,所以我们需要用函数,将注释填写上去。

我们查询出这张表的注释和字段,复制到Excel里面sheet4下,如下:

094146d05a9724c04d6fe1c061492a41.png

接着我们就需要用VLOOKUP 函数了。

我写的如下:

926558fd61b19f336f2280ba2c33b5f3.png

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

需要查找的字段:R1

在哪里查找:就在我复制下来的sheet4里面

输出第几列:将第二列的数据引用过来 填写2

查找模式:有true和false 。true是模糊,false是精确。

这样下来,就可以直接替换了

13aa58fca5b9ff7ff164ceb90fcbf8f1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值