在.NET中解析SQL语句(使用列名,条件等)

时间:2010-11-12 02:17:40

标签: sql parsing

在我的应用程序中,我有一个文本框,用户可以粘贴过程,我需要解析此SQL并获取表名,连接,列,列模式等。

c#中有一个简单而不是使用字符串操作来执行此活动吗?

3 个答案:

答案 0 :(得分:1)

不使用复杂的SQL Parser,从SQL查询中正确检索表,列并不容易。我们以这个简单的SQL为例:

SELECT a.deptno "Department", 
   a.num_emp/b.total_count "Employees", 
   a.sal_sum/b.total_sal "Salary"
FROM
(SELECT deptno, COUNT(*) num_emp, SUM(SAL) sal_sum
 FROM scott.emp
 GROUP BY deptno) a,
(SELECT COUNT(*) total_count, SUM(sal) total_sal
 FROM scott.emp) b

您不仅需要在from子句的子查询中获取类似:scott.emp.deptno的列,而且还不能将num_emp作为列,它只是子查询中的别名。

举个例子让你知道字符串操作或RegEx不适用于此,你应该fully parse SQL来精确地获得所需的结果。

答案 1 :(得分:0)

Here是一个项目,您可以查看有关入门者的信息。

修改 - This可能会对您有所帮助。如果没有,请查看使用RegEx。

答案 2 :(得分:0)

以上项目不适用于大程序,包含300多行Tsql的程序,请您提供任何替代方法来查找它,因为我需要使用

using Microsoft.Data.Schema.ScriptDom.Sql;
using Microsoft.Data.Schema.ScriptDom;

asselmbles。

但现在我可以获得使用上述组件的代码。

主要结果应该是给定商店过程中的表名和列名(包含300行代码)。