pgsql(postgresql) 查询获取字段名,字段类型,长度,主键,非空,自增,默认值,描述

该代码用于查询PostgreSQL数据库中特定表的字段信息,包括字段名、字段类型、长度、是否为主键、是否非空、是否自增、默认值及字段描述。通过内联查询和条件判断展示详细字段属性,特别地,对于位类型(bit)的长度处理进行了特殊考虑。
摘要由CSDN通过智能技术生成

postgresql 查询获取字段名,字段类型,长度,主键,非空,自增,默认值,描述

代码

select
	c.relname as 表名,
	a.attname as 列名,
	(case
		when a.attnotnull = true then true
		else false end) as 非空,
	(case
		when (
		select
			count(pg_constraint.*)
		from
			pg_constraint
		inner join pg_class on
			pg_constraint.conrelid = pg_class.oid
		inner join pg_attribute on
			pg_attribute.attrelid = pg_class.oid
			and pg_attribute.attnum = any(pg_constraint.conkey)
		inner join pg_type on
			pg_type.oid = pg_attribute.atttypid
		where
			pg_class.relname = c.relname
			and pg_constraint.contype = 'p'
			and pg_attribute.attname = a.attname) > 0 then true
		else false end) as 主键,
	concat_ws('', t.typname) as 字段类型,
	(case
		when a.attlen > 0 then a.attlen
		when t.typname='bit' then a.atttypmod
		else a.atttypmod - 4 end) as 长度,
	 col.is_identity	as 自增,
	 col.column_default	as 默认值,
	(select description from pg_description where objoid = a.attrelid
	and objsubid = a.attnum) as 备注
from
	pg_class c,
	pg_attribute a ,
	pg_type t,
	information_schema.columns as col
where
	c.relname = 'live_camerainfo'
	and a.attnum>0
	and a.attrelid = c.oid
	and a.atttypid = t.oid
	and col.table_name=c.relname and col.column_name=a.attname
order by
	c.relname desc,
	a.attnum asc

效果

postgresql 获取字段名,字段类型,主键,非空,默认值,描述

*注释为空的字段也能正常显示,能正确显示bit类别长度

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值