如何使用jOOQ用自定义函数解析SQL字符串?

我正在尝试使用jOOQ SQL 解析器解析SQL字符串。SQL包含如下自定义函数

select dateadd([*]'20190809', 'yyyymmdd', 1) from table1

它无法用任何方言来解析。我想获取选择字段并操作限制偏移子句。

有什么办法可以实现这一点吗?


FFIVE
浏览 114回答 1
1回答

慕慕森

有点标准的DATEADD()函数(DATE_ADD()在某些 SQL 方言中)采用多种不同的形式,具体取决于特定的 SQL 方言。jOOQ 的 SQL 解析器当前仅支持以下变体之一:DATEADD(<datepart>, <interval>, <date>),它对应于 SQL Server 中的语法(以及其他一些方言)。应用于您的示例(假设您想添加一天),这将是:select dateadd(DAY, 1, date '2019-08-09') from table1请注意,'20190809'在大多数方言中 不是正确的日期文字,这就是我将其替换为 的原因date '2019-08-09'。另请注意,您可以使用jOOQ 翻译器来尝试这些东西。假设您有自己的用户定义存储过程(也称为 )DATEADD,那么您确实不走运,因为 jOOQ 的解析器尝试解析上述表达式。使用任何其他名称(例如DATEADD1),jOOQ 的解析器解析此表达式不会有任何问题。然而,您可能想要配置 jOOQ 如何处理未知函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java