C# 用于在C中解析SQL查询的正则表达式#
我需要在C#中编写正则表达式来解析作为字符串给出的SQL连接查询。谁能帮帮我,因为我是新手。非常感谢 这是我的问题:C# 用于在C中解析SQL查询的正则表达式#,c#,sql,regex,C#,Sql,Regex,我需要在C#中编写正则表达式来解析作为字符串给出的SQL连接查询。谁能帮帮我,因为我是新手。非常感谢 这是我的问题: string query = @"SELECT table1.column1, table1.column2, table2.coulmn1, table2.column2 FROM table1 INNER JOIN table2 ON table1.column5 = table2.column5"; 我实际需要的是将所有重要数据放入单独的
string query = @"SELECT table1.column1, table1.column2, table2.coulmn1, table2.column2
FROM table1 INNER JOIN table2 ON table1.column5 = table2.column5";
我实际需要的是将所有重要数据放入单独的变量中,如下所示:
string class1 = table1
string class2 = table2
string joinForeignKey1 = table1.column5
string joinForeignKey2 = table2.column5
List<string> attributes1 = table1.column1, table1.column2
List<string> attributes2 = table2.column1, table2.column2
string class1=table1
字符串class2=表2
字符串joinForeignKey1=表1.5
字符串joinForeignKey2=表2.5
列表属性1=表1.column1,表1.column2
列表属性2=表2.column1,表2.column2
//评论
我意识到我在sql查询中犯了一个错误,所以会有一个ON子句
我可以强制用户向我提供正确的语法,这样就没有问题了
我没有提到的是子句上可以有多个连接(多个连接)
非常感谢,我将非常感谢您提供的任何帮助。我个人不建议您这样做,除非您有非常非常有效的理由这样做,并且完全可以控制SQL的编写方式 首先,您为SQL语句注意到的语法是老式的join语法,而不是使用更常见的ON语法 差不多
SELECT A.ColumnA, B.ColumnB
FROM MyTable A
INNER JOIN YourTable B
ON (A.MyIdentity = B.MyForeignKey)
因此,除非您可以强制用户以旧语法输入查询,否则您已经走上了一条行不通的道路
如果我被迫做这类事情,而且我确实控制了它,我个人就不会为RegEx操心,因为这个过程是如此结构化。我只想使用基本的字符串操作。从注释中提取这一点,因为我认为这是正确的答案:
SQL在不应该尝试用正则表达式解析的内容列表中排名第三,就在和后面。使用特定方言,而不是正则表达式。所有查询都将使用这种格式吗?源表、派生表或任何其他结构中是否可能存在注释,从而将事情搞砸?编辑:我刚刚注意到你发布的内容无论如何都不是有效的SQL。它缺少一个关于子句的
。SQL是不应该尝试用正则表达式解析的内容列表中的第3个,就在后面和后面。使用特定于方言的专用SQL解析器,而不是正则表达式。@martin-他的查询是有效的SQL,只是没有使用最新的ANSI连接标准。@Mitchel:不,他将SQL-92和SQL-89样式的连接混合到一个混合体中,这两种连接都不起作用。SQL-89将使用table1,table2
,而不是JOIN
关键字。@Craig-Crap,我忽略了。。。