gpt4 book ai didi

database - PostgreSQL:如何使用自定义 emunsortorder 值定义 ENUM 类型

转载 作者:行者123 更新时间:2023-11-29 14:29:33 25 4
gpt4 key购买 nike

有没有一种方法可以创建带有自定义订单索引的 ENUM 类型。之后可以更新 pg_type 并将 enumsortorder 字段设置为所需的值,但问题是在创建期间可以做吗?例如。类似

CREATE TYPE environment AS ENUM ('stage' 10, 'prod' 20);

最佳答案

排序顺序由类型声明定义:

create type my_enum as enum ('first', 'third');

with t(v) as (
values ('first'::my_enum), ('third')
)
select *
from t
order by 1;

v
-------
first
third
(2 rows)

您可以在所需位置添加新标签:

alter type my_enum add value 'second' before 'third';

with t(v) as (
values ('first'::my_enum), ('third'), ('second')
)
select *
from t
order by 1;

v
--------
first
second
third
(3 rows)

了解 CREATE TYPEALTER TYPE

如果以上还不够,请使用 map 函数,例如:

create or replace function my_enum_map(my_enum)
returns int language sql as $$
select case $1
when 'first' then 100
when 'second' then 50
when 'third' then 75
end
$$;

with t(v) as (
values ('first'::my_enum), ('third'), ('second')
)
select *
from t
order by my_enum_map(v);

v
--------
second
third
first
(3 rows)

您还可以将函数使用的值存储在表格中,以便于修改。

关于database - PostgreSQL:如何使用自定义 emunsortorder 值定义 ENUM 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com