有没有一种以区分大小写的方式使用:: regclass的方法?

时间:2019-05-20 20:33:19

标签: postgresql

我想知道是否存在一种使用::regclass的方式将string转换为pg_class.oid的方式,但要尊重大小写。让我举个例子吧。使用::regclass来获得表格的oid通常很方便,例如列出表格的所有列

SELECT * FROM pg_attribute WHERE attrelid = 'public.my_table'::regclass

但是,::regclass在进行搜索之前会将输入隐式转换为所有小写字母。 (如果您不将双引号引起来,这类似于PGSQL在SQL命令中解释表名的方式。)这意味着,如果表名为MY_table,则无法使用强制转换为{{1} }以获取其::regclass

我知道您可以使用其他方式,例如使用oidpg_class.relname。这个问题专门与使用pg_class.relnamespace有关,因为::regclass更方便(如果我能找到一种使它以区分大小写的方式工作的方式)。

我尝试过

::regclass

但是它在搜索的名称中包含双引号。

1 个答案:

答案 0 :(得分:1)

第二个查询不起作用的原因是双引号引起了。字符。所以这是怎么做。

SELECT * FROM pg_attribute WHERE attreloid = '"public"."my_table"'::regclass