Jooq заменить функцию - PullRequest
       10

Jooq заменить функцию

0 голосов
/ 26 марта 2019

Я вижу странное поведение, когда я использую JOOQ для генерации моего исходного SQL.

    CAST(addi.addke AS VARCHAR(10))||CAST(tlcst.tdsk AS
            VARCHAR(10))||date_format(DATE (rol.ntbd), '%Y%m%d')||replace(adft.ati,':','')  SPOT_ID,

Я создал скрипт JOOQ для вышеуказанного SQL как

concat((field("addi.addke").cast(SQLDataType.VARCHAR(10))),
                    (field("tlcst.tdsk").cast(SQLDataType.VARCHAR(10))),
                    (dateFormat(field("rol.ntbd"), "%Y%m%d")),
                    (replace(field("adft.ati", String.class), ":", ""))).as(field("SPOT_ID")))

И он генерирует какниже SQL с символом ? в функции замены.

(
cast(addi.addke as varchar(10)) || cast(tlcst.tdsk as varchar(10)) || date_format(rol.ntbd, '%Y%m%d') || replace(adft.ati, ?, ?)) as "SPOT_ID"

Как я могу не получить эти ? отметки в функции замены?

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

По умолчанию jOOQ оборачивает все ваши переменные как переменные связывания, что похоже на вызов DSL.val() за кулисами.Вы хотите встроить эти значения в вашем конкретном случае, поэтому вы должны использовать DSL.inline().Итак, позвоните:

replace(field("adft.ati", String.class), inline(":"), inline(""))

Для получения более подробной информации о значениях привязки, пожалуйста, обратитесь к руководству .

0 голосов
/ 27 марта 2019

Я решил вышеупомянутую проблему с функцией замены на

concat((field("addi.arr").cast(SQLDataType.VARCHAR(10))),
                    (field("tlcst.tee").cast(SQLDataType.VARCHAR(10))),
                    (dateFormat(date("rol.hhh"), "%Y%m%d")),
                    (replace(field("adft.jjj", String.class), field("':'", String.class), field("''", String.class)))).as(field("SPOT_ID")))
...