我正在嘗試使用jOOQ SQL 解析器解析SQL字符串。SQL包含如下自定義函數(shù):select?dateadd([*]'20190809',?'yyyymmdd',?1)?from?table1它無法用任何方言來解析。我想獲取選擇字段并操作限制偏移子句。有什么辦法可以實(shí)現(xiàn)這一點(diǎn)嗎?
1 回答

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
有點(diǎn)標(biāo)準(zhǔn)的DATEADD()
函數(shù)(DATE_ADD()
在某些 SQL 方言中)采用多種不同的形式,具體取決于特定的 SQL 方言。
jOOQ 的 SQL 解析器當(dāng)前僅支持以下變體之一:DATEADD(<datepart>, <interval>, <date>)
,它對應(yīng)于 SQL Server 中的語法(以及其他一些方言)。
應(yīng)用于您的示例(假設(shè)您想添加一天),這將是:
select?dateadd(DAY,?1,?date?'2019-08-09')?from?table1
請注意,'20190809'
在大多數(shù)方言中 不是正確的日期文字,這就是我將其替換為 的原因date '2019-08-09'
。
另請注意,您可以使用jOOQ 翻譯器來嘗試這些東西。
假設(shè)您有自己的用戶定義存儲過程(也稱為 )DATEADD
,那么您確實(shí)不走運(yùn),因?yàn)?jOOQ 的解析器嘗試解析上述表達(dá)式。使用任何其他名稱(例如DATEADD1
),jOOQ 的解析器解析此表達(dá)式不會有任何問題。然而,您可能想要配置 jOOQ 如何處理未知函數(shù)。
添加回答
舉報(bào)
0/150
提交
取消