열거형에 포함될 수 있는 모든 값을 가져오기 위한 SQL 쿼리
Postgresql이 얼마 전에 열거형 지원을 받았습니다.
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
쿼리가 있는 열거형에 지정된 모든 값을 가져오려면 어떻게 해야 합니까?
배열을 원하는 경우:
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
.
저스틴 옴스가 몇 가지 추가 팁을 지적해 준 덕분에 제 답변에 포함시켰습니다.
시도:
SELECT e.enumlabel
FROM pg_enum e
JOIN pg_type t ON e.enumtypid = t.oid
WHERE t.typname = 'myenum'
SELECT unnest(enum_range(NULL::your_enum))::text AS your_column
이렇게 하면 열거형 "your_enum"의 내용에 대한 단일 열 결과 집합과 유형 텍스트의 "your_column"이라는 열이 반환됩니다.
다음 쿼리를 사용하여 열거형에 대한 모든 열거형 값을 가져올 수 있습니다.쿼리를 사용하면 열거형이 위치한 네임스페이스도 선택할 수 있습니다(여러 네임스페이스에 열거형이 정의된 경우 필요). 그렇지 않으면 쿼리의 해당 부분을 생략할 수 있습니다.
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'))
언급URL : https://stackoverflow.com/questions/1616123/sql-query-to-get-all-values-a-enum-can-have
'programing' 카테고리의 다른 글
LIKE 식에서 안전하게 사용할 수 있도록 SQL Server에서 문자열 이스케이프 (0) | 2023.05.12 |
---|---|
Eclipse 실행 파일 시작 프로그램 오류:동반자 공유 라이브러리를 찾을 수 없습니다. (0) | 2023.05.12 |
문자열에서 정수 값을 swift로 가져옵니다. (0) | 2023.05.12 |
PostgreSQL 'NOT IN' 및 하위 쿼리 (0) | 2023.05.12 |
GUID가 GUID인지 확인하는 방법 (0) | 2023.05.12 |