Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于在C中解析SQL查询的正则表达式#_C#_Sql_Regex - Fatal编程技术网

C# 用于在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"; 我实际需要的是将所有重要数据放入单独的

我需要在C#中编写正则表达式来解析作为字符串给出的SQL连接查询。谁能帮帮我,因为我是新手。非常感谢

这是我的问题:

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,我忽略了。。。