Apache camel 从mac列中选择,其中mac位于varchar列表中

Apache camel 从mac列中选择,其中mac位于varchar列表中,apache-camel,postgresql-9.3,Apache Camel,Postgresql 9.3,我正在使用Camel向Postgres数据库的查询发送一个命名参数。讨论中的命名参数是命名成员,是字符串化mac地址的列表,例如[40:61:86:05:fd:69','40:61:86:05:fd:69'],然后我想用它来筛选结果集 简化,其中mac列位于\u varchar\u mac的列表\u中。 实际代码段: SELECT * FROM table WHERE mac IN(:#in:members::macaddr); 然而,只有当mac地址列表中有一项时,上

我正在使用Camel向Postgres数据库的查询发送一个命名参数。讨论中的命名参数是命名成员,是字符串化mac地址的列表,例如[40:61:86:05:fd:69','40:61:86:05:fd:69'],然后我想用它来筛选结果集

简化,其中mac列位于\u varchar\u mac的列表\u中。 实际代码段:

SELECT
    *
FROM
    table
WHERE
    mac IN(:#in:members::macaddr);
然而,只有当mac地址列表中有一项时,上述方法才有效。如果有两个,我会得到以下错误:

运算符不存在:macaddr=字符变化

看起来很简单,它只是一个数组,所以我尝试以下方法:

WHERE
    mac IN(:#in:members::macaddr[]);
新错误,由以下原因引起:org.postgresql.util.PSQLException:错误:运算符不存在:macaddr=macaddr[]

在阅读中,似乎不可能在中使用:


macaddr类型还支持标准关系运算符>,其中mac=anystring_to_array:in:members','::macaddr[]是否有效?假设值之间用a分隔,不相关,但是:Postgres 9.3将在本月发布。你应该计划升级到当前版本。对不起,我想我还不够清楚。变量的表示形式为['40:61:86:05:fd:69','40:61:86:05:fd:69'],例如,每个mac都是数组中自己的字符串。关于这个版本,我痛苦地意识到了这一点,但陷入了这种情况。try-translate:in:members,“[]”,“{}”::macaddr[],它将用卷曲的方括号替换方括号,并删除任何单引号。然后,可以将结果强制转换到一个arraySeems,例如:in:member语法在没有in-Postgres关键字的情况下是不允许的,这使得很难告诉Postgres这确实是一个数组。使用诸如string_to_array:in:members,“,”之类的函数会告诉我语法错误。如果使用:in,删除它,则会给我一个错误,即类型未知的函数string_to_array是不可能的。我暂停一下,只是在代码中将我的参数格式化为字符串,这样使用任何方法都可以。