sql - 在 WHERE 子句中将字符串数组单独转换为自定义枚举类型
问题描述
我正在尝试将字符串列表转换为自定义枚举类型列表。我正在寻找的效果可以通过以下方式实现:
select * from table_1 where column_a in (cast('ENUM1' AS custom_enum), cast('ENUM2' AS custom_enum))
但由于我试图绕过一些 JPA/hibernate 问题,我在 sql 枚举类型上使用带注释的过滤器,我需要动态地将枚举字符串添加到列表中。所以我试图弄清楚如何将整个字符串列表转换为 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')
推荐阅读
- javascript - 返回函数不会在 React 中呈现
- mysql - 如何在 VBA 中定义 Recordset.GetRows 参数?
- sql - 创建仅包含日期的年份部分的复合唯一键约束
- ibm-cloud - 无法将模型 zip 上传到 Cloud Annotations
- javascript - 如何将参数传递给 js 脚本?
- python - python上的价格令牌电报机器人
- css - 如何在桌面和移动设备上拥有单独的导航?
- c++ - f(U(*)()) 只是 f(U*) 的一个特殊版本吗?
- spring-boot - 为什么 Hibernate 在一对多双向更新操作中给出同一实体的多个表示?
- c - 预期的 ';' 在“静态”错误之前,仅在使用 gcc 编译时发生在 ubuntu 而不是 windows 上