gpt4 book ai didi

postgresql - 如何在 LIKE 搜索中显式转换 ENUM 类型?

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

今天我遇到了一个关于 Postgres 的有趣问题,但我找不到直接的解决方案。

我制作了一个自定义 ENUM 类型,例如:

CREATE TYPE public.type_emergency_status AS ENUM
('OPEN', 'OPEN.ATTENDED', 'OPEN.DEFERRED', 'ABANDONED', 'CLOSED.CANCELED', 'CLOSED.RESOLVED', 'CLOSED.UNRESOLVED');

在我的表中,我定义了一个字段作为这种类型。现在,我想找到所有带有 emergency_status LIKE 'CLOSED%' 的记录

如果我进行如下简单查询:

SELECT * FROM <table_name> WHERE <field> LIKE 'CLOSED%'

并获得:

ERROR:  operator does not exist: type_emergency_status ~~ unknown
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

问题是,我在哪里进行显式转换?

我已经尝试了几种方法,但还没有找到该怎么做。

有这方面的数据库专家吗?

最佳答案

为了使其更加安全和索引友好:

SELECT *
FROM <table_name>
WHERE <field> in (
select enumlabel::type_emergency_status
from pg_enum
where enumtypid = 'type_emergency_status'::regtype and enumlabel like 'CLOSED%');

关于postgresql - 如何在 LIKE 搜索中显式转换 ENUM 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59001414/

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