답변:
배열을 원한다면 :
SELECT enum_range(NULL::myenum)
열거 형의 각 항목에 대해 별도의 레코드를 원하는 경우 :
SELECT unnest(enum_range(NULL::myenum))
이 솔루션은 열거 형이 기본 스키마에없는 경우에도 예상대로 작동합니다. 예를 들어, 교체 myenum
와 함께 myschema.myenum
.
위 쿼리에서 반환 된 레코드의 데이터 형식은 myenum
입니다. 수행중인 작업에 따라 텍스트로 전송해야 할 수도 있습니다. 예 :
SELECT unnest(enum_range(NULL::myenum))::text
열 이름을 지정하려면을 추가 할 수 있습니다 AS my_col_name
.
추가 답변을 지적 해준 Justin Ohms에게 감사의 말을 전합니다.
NULL::
무엇입니까?
SELECT enum_range(myenum)
? 캐스팅의 의미는 무엇입니까 null
?
시험:
SELECT e.enumlabel
FROM pg_enum e
JOIN pg_type t ON e.enumtypid = t.oid
WHERE t.typname = 'myenum'
ORDER BY e.enumsortorder
경우 쿼리에 추가 하십시오. 새 값을 사용하여 열거 형에 삽입 된 경우 열거 값이 가장 가능성이 순서가 될 것이다 BEFORE
나 AFTER
.
다음 쿼리를 사용하여 열거 형에 대한 모든 열거 형 값을 가져올 수 있습니다. 쿼리를 사용하면 열거 형이 존재하는 네임 스페이스를 선택할 수 있습니다 (이 열거 형이 여러 네임 스페이스에 정의 된 경우 필요합니다. 그렇지 않으면 쿼리의 해당 부분을 생략 할 수 있음).
SELECT enumlabel
FROM pg_enum
WHERE enumtypid=(SELECT typelem
FROM pg_type
WHERE typname='_myenum' AND
typnamespace=(SELECT oid
FROM pg_namespace
WHERE nspname='myschema'))