这句话怎么能用jOOQ来表达?SELECT version FROM abc ORDER BY string_to_array(version, '.', '')::int[] desc limit 1
我正在努力与功能和演员组合。
最佳答案
你有多种选择。
懒惰一点,将所有内容都封装在一个简单的SQL表达式中:
Field<Integer[]> f1 =
DSL.field("string_to_array(version, '.', '')::int[]", Integer[].class);
创建可重用函数:
Field<Integer[]> stringToIntArray(Field<String> arg1, String arg2, String arg3) {
return DSL.field("string_to_array({0}, {1}, {2})::int[]", Integer[].class,
arg1, DSL.val(arg2), DSL.val(arg3));
}
// and then...
Field<Integer[]> f2 = stringToIntArray(ABC.VERSION, ".", "");
使用代码生成器生成内置函数,并显式转换它:
Field<Integer[]> f3 = Routines.stringToArray(ABC.VERSION, DSL.val("."), DSL.val(""))
.cast(Integer[].class);
内置函数是
pg_catalog
数据库中postgres
模式的一部分。把它放在一起
DSL.using(configuration)
.select(ABC.VERSION)
.from(ABC)
.orderBy(fN.desc()) // place any of f1, f2, f3 here
.limit(1)
.fetch();
关于postgresql - PostgreSQL函数+在jOOQ中强制转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27334400/