与CRUD操作无关,从字符串查询中获取表名

时间:2018-10-04 08:43:11

标签: java sql-parser jsqlparser

我有如下字符串。我必须从中获取所有表名。

 select SEQ_NO,CODE,CD_NAME,CD_TYPE,CD_CITY,CDS_STATUS,CDS_SUBSTATUS,  
 to_char(CDS_LAST_MOD_DATE,'dd/mm/yyyy') as CDS_LAST_MOD_DATE   from  
 company_details left outer join on company_details_status where  
 cd_seq_no=cds_seq_no,CODE=(select CODE from company_details where cd_seq_no='1' )  order by CDS_LAST_MOD_DATE.


Insert into table1 value(?,?)
Insert into table1 (col1,col2) values(?,?)

如何获取上述插入查询的表名。

1 个答案:

答案 0 :(得分:0)

这是一个简短的代码,提示您如何解决此问题。它使用具有以下模式的正则表达式匹配器:

1. Unity free version has the ability to publishing game on Google Play Store?

这里的目的是捕获表名称,只要它们出现在选择语句中(在FROM\s+(\S+)|JOIN\s+(\S+)|INSERT\s+INTO\s+(\S+) FROM之后)或插入语句中(在JOIN之后)。请注意,该模式使用了三个捕获组的交替形式。

INSERT INTO

Demo

很明显,我可能错过了很多边缘情况。通常,对于完整的解决方案,您可能必须编写实际的SQL解析器。对于简单的选择和插入查询,这可能是一个很好的起点。