มุมมอง schema ข้อมูลและ pg_typeof () ส่งคืนข้อมูลประเภทที่ไม่สมบูรณ์ จากคำตอบเหล่านี้psql
ให้ข้อมูลประเภทที่แม่นยำที่สุด (OP อาจไม่ต้องการข้อมูลที่แม่นยำ แต่ควรรู้ข้อ จำกัด )
create domain test_domain as varchar(15);
create table test (
test_id test_domain,
test_vc varchar(15),
test_n numeric(15, 3),
big_n bigint,
ip_addr inet
);
การใช้psql
และ\d public.test
แสดงการใช้งานชนิดข้อมูลอย่างถูกต้องtest_domain
ความยาวของคอลัมน์ varchar (n) และความแม่นยำและมาตราส่วนของคอลัมน์ตัวเลข (p, s)
sandbox = # \ d public.test
ตาราง "public.test"
คอลัมน์ | ประเภท | การปรับเปลี่ยน
--------- + ----------------------- + -----------
test_id | test_domain |
test_vc | ตัวละครแตกต่างกัน (15) |
test_n | ตัวเลข (15,3) |
big_n | bigint |
ip_addr | inet |
แบบสอบถามนี้เทียบกับมุมมอง data_schema ไม่แสดงการใช้งานtest_domain
เลย นอกจากนี้ยังไม่รายงานรายละเอียดของคอลัมน์ varchar (n) และตัวเลข (p, s)
select column_name, data_type
from information_schema.columns
where table_catalog = 'sandbox'
and table_schema = 'public'
and table_name = 'test';
column_name | ประเภทข้อมูล
------------- + -------------------
test_id | ตัวละครแตกต่างกันไป
test_vc | ตัวละครแตกต่างกันไป
test_n | เป็นตัวเลข
big_n | bigint
ip_addr | inet
คุณอาจได้รับข้อมูลทั้งหมดโดยเข้าร่วมมุมมอง data_schema อื่น ๆ หรือโดยการสอบถามตารางระบบโดยตรง psql -E
อาจช่วยด้วย
ฟังก์ชันpg_typeof()
แสดงการใช้งานอย่างถูกต้องtest_domain
แต่ไม่รายงานรายละเอียดของคอลัมน์ varchar (n) และตัวเลข (p, s)
select pg_typeof(test_id) as test_id,
pg_typeof(test_vc) as test_vc,
pg_typeof(test_n) as test_n,
pg_typeof(big_n) as big_n,
pg_typeof(ip_addr) as ip_addr
from test;
test_id | test_vc | test_n | big_n | ip_addr
------------- + ------------------- + --------- + ------ - + ---------
test_domain | ตัวละครที่แตกต่างกัน ตัวเลข | bigint | inet