将字符串数组转换为WHERE子句中的自定义枚举类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将字符串数组转换为WHERE子句中的自定义枚举类型相关的知识,希望对你有一定的参考价值。

我正在尝试将字符串列表转换为自定义枚举类型的列表。我正在寻找的效果可以通过以下方式实现:

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[]))

以上是关于将字符串数组转换为WHERE子句中的自定义枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

存储过程(Informix)中的自定义“WHERE”?

c#下可否将一个枚举类型的数组转换为一个整型数组

QVariant 中的自定义类型转换为空字符串

在where子句期间将十进制转换为日期[重复]

java如何用方法toString()将枚举类型转换为字符串类型

转换bash中的sql where子句