Postgresql mendapat dukungan enum beberapa waktu lalu.
CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);
Bagaimana cara mendapatkan semua nilai yang ditentukan dalam enum dengan kueri?
postgresql
enums
Wienczny
sumber
sumber
Jawaban:
Jika Anda menginginkan sebuah array:
Jika Anda ingin catatan terpisah untuk setiap item dalam enum:
informasi tambahan
Solusi ini berfungsi seperti yang diharapkan bahkan jika enum Anda tidak ada dalam skema default. Misalnya, ganti
myenum
denganmyschema.myenum
.Tipe data catatan yang dikembalikan dalam kueri di atas adalah
myenum
. Tergantung pada apa yang Anda lakukan, Anda mungkin perlu membaca. misalnyaJika Anda ingin menentukan nama kolom, Anda dapat menambahkan
AS my_col_name
.Penghargaan untuk Justin Ohms karena menunjukkan beberapa tips tambahan, yang saya masukkan ke dalam jawaban saya.
sumber
NULL::
?SELECT enum_range(myenum)
? Apa arti castingnull
?Mencoba:
sumber
ORDER BY e.enumsortorder
kueri. Nilai enumerasi kemungkinan besar akan rusak jika nilai baru dimasukkan ke dalam jenis enumerasi menggunakanBEFORE
atauAFTER
.Ini akan mengembalikan satu set hasil kolom tunggal dari isi enum "your_enum" dengan kolom bernama "your_column" dari jenis teks.
sumber
Anda bisa mendapatkan semua nilai enum untuk enum menggunakan kueri berikut. Kueri memungkinkan Anda memilih namespace tempat enum hidup juga (yang diperlukan jika enum didefinisikan dalam beberapa ruang nama; jika tidak, Anda dapat menghilangkan bagian dari kueri itu).
sumber