我试图将字符串列表转换为自定义枚举类型的列表。我正在寻找的效果可以通过以下方式实现:
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[]))
但是我尝试过的次数很少,给我带来了好运。
使用= 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')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句