Я нашел два способа достижения поставленной цели.
Подход № 1:
dsl.select(
field(
"concat({0})",
SQLDataType.VARCHAR,
list(
inline("ABC"),
inline(null, SQLDataType.VARCHAR),
inline("def")
)
)
).execute();
Это имеет отношение к намеченному поведению, но требует уродливых в моих глазах "concat({0})"
. С моей точки зрения, более элегантный подход:
Подход № 2:
dsl.select(
function(
"concat",
SQLDataType.VARCHAR,
inline("ABC"),
inline(null, SQLDataType.VARCHAR),
inline("def")
)
).execute();
В этом решении не используется встроенный SQL с заполнителями в качестве подхода # 1. Почему JOOQ генерирует ||
вместо concat(...)
, во-первых, все еще предстоит объяснить.