0
如何在不使用數據類型的情況下獲取默認列值?Postgres獲得列的默認實際值(不包括數據類型)
我創建一個新的枚舉類型:
CREATE TYPE t AS ENUM ('a', 'b', 'c');
然後創建一個表:
create table t1 (c1 t default 'a'::t);
當無論是通過INFORMATION_SCHEMA或PG_ queering列默認*我得到的響應,由值組成的文本和它的類型連接起來:
# SELECT column_default::text
FROM information_schema.columns
WHERE (table_schema, table_name, column_name)
= ('public', 't1', 'c1');
column_default
----------------
'a'::t
(1 row)
# SELECT d.adsrc AS default_value
FROM pg_catalog.pg_attribute a
LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum)
= (d.adrelid, d.adnum)
WHERE NOT a.attisdropped
AND a.attnum > 0
AND a.attrelid = 'public.t1'::regclass
AND a.attname = 'c1';
default_value
---------------
'a'::t
(1 row)
我需要它來ret甕一個,而不是「A」 ::牛逼,正是因爲我得到讀取枚舉值時:
select UNNEST(ENUM_RANGE(NULL::t));
unnest
--------
a
b
c
(3 rows)
我知道我可以修剪/正則表達式,但有一個純PostgreSQL的解決方案呢?