我正在尝试使用基本算法获取SQL查询中使用的不同表名 你们其中有人已经这样做了吗?
我在查找使用整个SQL语法的全局算法时遇到问题,因为有几种方法可以使用FROM语句,例如FROM table1 as t1
或FROM table1 t1
或FROM table1
等。
我还没有任何目标编程语言,但我想要一种能够适应任何语言和平台的算法,所以我不想使用任何库。它需要与Oracle和Sybase SQL兼容。
答案 0 :(得分:1)
如果您可以假设查询中只有一个表被访问,那么您可以在FROM关键字之后从FROM子句中获取表名。 (您必须考虑表名称可以别名的各种方式,并考虑可能的子查询。)
可以限制可能性的假设越多,编写解析器就越容易。如果没有一些相当严格的假设,尝试解析并考虑加入多个表的不同可能方式等变得非常复杂。但这是可能的。
您可以使用Oracle的文档查看您必须处理的所有可能情况。 Oracle doc