PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn SQL để lấy tất cả các giá trị mà một enum có thể có

Nếu bạn muốn một mảng:

SELECT enum_range(NULL::myenum)

Nếu bạn muốn có một bản ghi riêng cho từng mục trong enum:

SELECT unnest(enum_range(NULL::myenum))  

Thông tin bổ sung

Giải pháp này hoạt động như mong đợi ngay cả khi enum của bạn không có trong lược đồ mặc định. Ví dụ:thay thế myenum với myschema.myenum .

Kiểu dữ liệu của các bản ghi được trả về trong truy vấn trên sẽ là myenum . Tùy thuộc vào những gì bạn đang làm, bạn có thể cần truyền sang văn bản. ví dụ:

SELECT unnest(enum_range(NULL::myenum))::text

Nếu bạn muốn chỉ định tên cột, bạn có thể thêm AS my_col_name .

Tín dụng cho Justin Ohms vì đã chỉ ra một số mẹo bổ sung mà tôi đã kết hợp vào câu trả lời của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyền bị từ chối đối với mối quan hệ

  2. Số lần lặp lại / trùng lặp có thứ tự

  3. Oracle đến PostgreSQL:Cú pháp nối ngoài ANSI trong PostgreSQL

  4. EDB trở thành người dẫn đầu trong thị trường Postgres như thế nào

  5. Đăng ký và chạy PostgreSQL 9.0 dưới dạng Dịch vụ Windows