我有如下字符串。我必须从中获取所有表名。
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(?,?)
如何获取上述插入查询的表名。
答案 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
很明显,我可能错过了很多边缘情况。通常,对于完整的解决方案,您可能必须编写实际的SQL解析器。对于简单的选择和插入查询,这可能是一个很好的起点。