Java应用程序需要支持数据库Oracle、DB2和MSS。涉及sql函数的某些查询的语法在不同的数据库中具有不同的语法。示例: oracle中的NULLIF()可能不适用于MSS。有没有开放源码的SQL解析器可以解析并将查询字符串转换为特定于数据库的sql?
发布于 2021-08-23 18:44:24
jOOQ有一个SQL解析器,它可以做你想要的事情。你可以在这里看到在线版本:https://www.jooq.org/translate。解析器还可以作为CLI或API工作。举个例子:
System.out.println(
DSL.using(SQLSERVER, new Settings()
.withParseDialect(ORACLE)
.withTransformTableListsToAnsiJoin(true))
.parser()
.parse("select nvl(a.z, 1) from a, b, c where a.x = b.x(+) and a.y = c.y")
);这将打印以下内容:
select coalesce(A.Z, 1)
from A
join C
on A.Y = C.Y
left outer join B
on A.X = B.X;jOOQ是开源关系型数据库管理系统的开放源码,并且有其他数据库产品的商业驱动程序。我知道你可能在寻找一个完全开放源码的库,我只能提供给你一个部分开放源码的库,也许其他人会发现这个答案很有用。
免责声明:我为jOOQ背后的公司工作。
发布于 2012-11-22 16:31:00
@hd1有一个正确的问题:你想要实现什么?
链接:
https://stackoverflow.com/questions/13506722
复制相似问题