从 PostgreSQL 中的 regclass 获取表名

jla*_*rcy 3 postgresql function

我想从regclassPostgreSQL 中获取表名。我找到了解决办法,但我对此不太满意:

SELECT split_part('datastore.inline'::regclass::TEXT, '.', 2);
Run Code Online (Sandbox Code Playgroud)

Postgre中有没有专门的函数从regclass中提取表名?

kli*_*lin 6

您可以查询pg_class

select relname 
from pg_class 
where oid = 'datastore.inline'::regclass;
Run Code Online (Sandbox Code Playgroud)

没有内置函数,但您可以创建自己的函数:

create or replace function get_relname(regclass)
returns name language sql as $$
    select relname 
    from pg_class 
    where oid = $1
$$;

select get_relname('datastore.inline'::regclass);
Run Code Online (Sandbox Code Playgroud)