我试图将字符串列表转换为自定义枚举类型的列表。我正在寻找的效果可以通过以下方式实现:
select * from table_1 where column_a in (cast('ENUM1' AS custom_enum), cast('ENUM2' AS custom_enum))
但是由于我试图绕过我在sql枚举类型上使用带注释的过滤器的某些JPA /休眠问题,因此需要将枚举字符串动态添加到列表中。因此,我试图找出如何将整个字符串列表转换为enum_types列表。我猜是这样的:
select * from table_1 where column_a in (cast({'ENUM1', 'ENUM2'} AS custom_enum[]))
但是我尝试过的很多都没有给我带来任何运气。
答案 0 :(得分:2)
使用= ANY
代替IN
。数组文字应使用引号引起来:
select *
from table_1
where column_a = any (cast('{ENUM1, ENUM2}' as custom_enum[]))
或将列强制转换为text
:
select *
from table_1
where column_a::text in ('ENUM1', 'ENUM2')