为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

FFIVE 2023-06-28 15:32:10
我正在尝试使用jOOQ SQL 解析器解析SQL字符串。SQL包含如下自定义函数:select dateadd([*]'20190809', 'yyyymmdd', 1) from table1它无法用任何方言来解析。我想获取选择字段并操作限制偏移子句。有什么办法可以实现这一点吗?
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

有点标准的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 如何处理未知函数。


查看完整回答
反对 回复 2023-06-28
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信