【发布时间】:2018-01-02 17:31:05
【问题描述】:
我有一个包含 SQL 查询的字符串。和一个字符串,其中包含查询中找到的列之一的名称。如何找到该列所来自的表?
例如:
string qry = "select [firstName],[result] from [dbo].[patients],[dbo].results]";
string column = "firstName";
我想得到[dbo].[patients]。
当然,使用T-SQL也会让复杂的查询和程序变得更复杂。
【问题讨论】:
-
如果您的
from子句有多个表怎么办?如果它使用 CTE 和/或子查询怎么办?通常,您要问的是如何构建 SQL 解析器。我认为这将是一个有点过于宽泛的问题,除非您可以严格限制输入。 -
该值不能单独从SQL字符串中提取,也不能从执行该语句的结果中确定。您需要知道两个表中存在的列才能做出决定。
-
如果 [dbo].[patients] 或 [dbo].[results] 是一个视图并且您确实想知道该表,则它会变得更加复杂。
-
值得注意的是,
TableA,TableB连接语法被认为是不好的做法。它已经过时了四分之一个世纪。 -
有一个 sql 解析器,但没有很好的文档记录。我不知道它是否适合您的需求,但值得一看:msdn.microsoft.com/en-us/library/…
标签: c# sql .net sql-server