【发布时间】:2014-10-07 13:44:31
【问题描述】:
我有一个如下所示的 SQL 字符串:
SELECT
USER."ID", USER."NAME", USER."BIRTH",USER."GENDER",
PACKAGE."type"
PACKAGE."code"
FROM
"DBNAME"."USER" USER,
"DBNAME2"."PACKAGE" PACKAGE
WHERE
USER."PACKAGE_ID" = PACKAGE."ID"
ORDER BY
USER."NAME";
我应该如何在 C# 中编写正则表达式来提取 SELECT 和 FROM 关键字之间的所有列名,然后是 FROM 子句中的表名?
预期的输出应该找到这些,以便我可以将它们放入List 以循环:
列列表:
USER."ID"
USER."NAME"
USER."BIRTH"
USER."GENDER"
PACKAGE."type"
PACKAGE."code"
表格列表:
"DBNAME"."USER" USER
"DBNAME2"."PACKAGE" PACKAGE
【问题讨论】:
-
你能展示一个期望输出的例子吗?
-
使用词法分析器比正则表达式更容易解析 SQL。
-
正则表达式是此类事情中使用最多(误用)的工具。你需要一个解析器。 @hjpotter92 的词法分析器可能还不够。签出这个 impl here at codeproject。这可能更适合您当前的需求,但可以很好地适应未来的需求。查询将变得复杂,您可能需要的不仅仅是列名和表名。
-
@inquisitive 不幸的是,codeproject 的实现目前不支持 select 子句。 :(