我需要以编程方式编辑SQL命令,使SQL命令中的每个表都有别名。输入是数据库的模式和SQL命令。输出应该是一个SQL查询,其中每个表都有一个别名,并且在我们引用该表的属性时总是使用它。
例如,让我们拥有一个数据库person(id, name, salary, did)
和department(did, name)
以及以下SQL命令:
select id, t.did, maxs
from person
join (
select did, max(salary) maxs
from person
group by did
) t on t.maxs = salary and person.did = t.did
此类输入的预期结果为
select p1.id, t.did, t.maxs
from person p1
join (
select p2.did, max(p2.salary) maxs
from person p2
group by p2.did
) t on t.maxs = p1.salary and p1.did = t.did
我正在考虑使用ANTLR4,但是,我很好奇是否有更简单的解决方案。我最近遇到TSqlParser,是否可以使用这个类以一种简单的方式实现这样的重写?