我在这里有关于SQL问题的正则表达式。对于表单的SQL联合查询:
Select a From (subquery1) union (subquery2)
我虽然这是一个简单的正则表达式来匹配在的From子句中,我有以下正则表达式:
\((?<subquery1>.*)\) union \((?<subquery2>.*)\)
但后来我发现事情可以递归,2子查询也可以再次包含联合案例,例如:
(
(select a from b) union (select x from b)
) union (
(select a from b) union (select x from b)
)
这完全弄乱了我的正则表达式捕获,如果它不贪婪,则subquery1将捕获第一个联合而不是第二个联合,如果它是贪婪的话它将捕获所有内容直到第三个联合。我还试过加入非贪心的?运营商既捕获条款,但没有运气。
我需要启发,非常感谢
PS:我有一个自定义数据库位于MS SQL Server 2012之上,我需要解析标准的SQL select查询,并对表名做了一些修改;对几列进行数值运算。从而生成修改但仍然标准的SQL查询,并将其传递给SQL服务器