【发布时间】:2014-09-10 08:37:59
【问题描述】:
我需要从表示 sql 查询的简单字符串中提取用于查询的表,而无需在 C# 中执行查询本身。
例子:
string strQuery = "SELECT * FROM table1 LEFT JOIN (SELECT * FROM table2) tt WHERE tt.name IN (SELECT name FROM table3)";
ArrayList arrUsedTables = GetUsedTablesFromQuery(strQuery);
在这一行之后,对象arrUsedTables 将包含:
table1,table2,table3
请记住,查询可能要复杂得多!
【问题讨论】:
-
到目前为止你尝试了什么?
-
我建议使用正则表达式,但是.... stackoverflow.com/a/281059/284240
-
你需要一个 .Net 的 SQL 解析器:stackoverflow.com/questions/76083/parsing-sql-in-net
-
@Andreas 该链接是一个带有死链接和 Java 的封闭问题
-
@AaronMcIver antlr4.org 是跨平台的,问题是针对 Java 提出的,但提供的解决方案也适用于 C#。我没有检查链接,对此我感到抱歉。