Как это утверждение можно выразить с помощью jOOQ?
SELECT version FROM abc ORDER BY string_to_array(version, '.', '')::int[] desc limit 1
Я борюсь с комбинацией функции и приведения.
Как это утверждение можно выразить с помощью jOOQ?
SELECT version FROM abc ORDER BY string_to_array(version, '.', '')::int[] desc limit 1
Я борюсь с комбинацией функции и приведения.
У вас есть различные варианты.
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();
8.2 <comparison predicate>
,General Rules
,1) b) ii)
, что операция сравнения<
не определена для массивов... Интересно, однако, дает ли PostgreSQL такие гарантии... похоже, это так - person Lukas Eder   schedule 06.12.2014