前言
仅仅为了记录一下工作中的实战技能
提示:本文所述,仅限本人实际工作中遇到情况,请各位大佬手下留情,多多指点
一、如何在PG数据库中根据字段or注释查询所在的表和字段名称?
相信很多的小伙伴们跟我一样,初入职场,需要经历时间的过渡,在学校或者培训机构,基本上使用的都是mySql数据库,或者有学习大数据的同学说自己用的是Oracle数据库,这些都是我们在工作中对数据操作的工具,在工作之后,会因为不同的公司的需求不同,所以使用数据库一样,就像我之前使用的是mySQL,但现在的工作就要使用PG数据库,首先要做的就是适应语句之间的不同。因为很多时候,告诉你用哪张表里的哪个字段,都会去找,但是在整理数据的时候,可能你只有一个字段名称或者只有一个注释,这个时候就需要用到下面的语句了,仅供参考吧。
1.根据字段名称查询所在表
语句如下:
SELECT
a.attname as "字段名",
c.relname as "表名"
FROM
pg_class as c,
pg_attribute as a,
pg_type as t
WHERE
a.attname = 'XXXX'
and a.atttypid = t.oid
and a.attrelid = c.oid
and a.attnum>0;
使用的时候只需要把’XXX’改成你所要查询的字段就可以了。
2.根据字段名称查询注释
语句如下:
SELECT
a.attname as "字段名",
col_description(a.attrelid,a.attnum) as "注释",
concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '.∗.∗')) as "字段类型"
FROM
pg_class as c,
pg_attribute as a,
pg_type as t
WHERE
a.attname = 'XXXX'
and a.atttypid = t.oid
and a.attrelid = c.oid
and a.attnum>0;
同理修改’XXX’即可。
## 2.根据注释查询字段名、表名
语句如下:
SELECT
a.attname as "字段名",
col_description(a.attrelid,a.attnum) as "注释",
concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '.∗.∗')) as "字段类型"
FROM
pg_class as c,
pg_attribute as a,
pg_type as t
WHERE
col_description(a.attrelid,a.attnum) = 'XXX'
and a.atttypid = t.oid
and a.attrelid = c.oid
and a.attnum>0;
同样是修改‘XXX’。
总结
如上所示方法,本人亲测可用,效果相当可观,节省时间,提高效率,本人只是初级小白,如果各位大神有更好的方法,希望不吝赐教,在评论区多多留言。