postgresql查询所有表名解决部分表的注释为空的问题

本文介绍了一个PostgreSQL查询所有表名及其注释的常见问题,即使用`obj_description(relfilenode, 'pg_class')`时可能会得到空值。作者提供了一个修正方案,建议将查询改为`obj_description(oid, 'pg_class')`,以确保获取正确的表注释。此修正方法已证实可以匹配navicat等数据库管理工具的结果。

postgresql 查询所有表名,解决部分表的注释为空的问题

在网上搜到的大部分都是下面这种写法,这种写法有时候会查出来空值,但是navicat等工具查出来明明有值,其实只需要将obj_description ( relfilenode, ‘pg_class’ ) 改成obj_description ( oid, ‘pg_class’ )就行了。

有问题写法

SELECT
	relname AS TABLE_NAME,
	CAST ( obj_description ( relfilenode, 'pg_class' ) AS VARCHAR ) AS COMMENT 
FROM
	pg_class C 
WHERE
	relkind = 'r' 
 	AND relname NOT LIKE'pg_%' 
 	AND relname NOT LIKE'sql_%' 
ORDER BY
	relname

正确写法

SELECT
	relname AS tabname,
	CAST ( obj_description ( oid, 'pg_class' ) AS VARCHAR ) AS COMMENT 
FROM
	pg_class C 
WHERE
	relkind = 'r' 
	AND relname NOT LIKE'pg_%' 
	AND relname NOT LIKE'sql_%' 
ORDER BY
	relname
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值