我想知道是否存在一种使用::regclass
的方式将string
转换为pg_class.oid
的方式,但要尊重大小写。让我举个例子吧。使用::regclass
来获得表格的oid
通常很方便,例如列出表格的所有列
SELECT * FROM pg_attribute WHERE attrelid = 'public.my_table'::regclass
但是,::regclass
在进行搜索之前会将输入隐式转换为所有小写字母。 (如果您不将双引号引起来,这类似于PGSQL在SQL命令中解释表名的方式。)这意味着,如果表名为MY_table
,则无法使用强制转换为{{1} }以获取其::regclass
。
我知道您可以使用其他方式,例如使用oid
和pg_class.relname
。这个问题专门与使用pg_class.relnamespace
有关,因为::regclass
更方便(如果我能找到一种使它以区分大小写的方式工作的方式)。
我尝试过
::regclass
但是它在搜索的名称中包含双引号。
答案 0 :(得分:1)
第二个查询不起作用的原因是双引号引起了。字符。所以这是怎么做。
SELECT * FROM pg_attribute WHERE attreloid = '"public"."my_table"'::regclass