繁体   English   中英

如何使用 C# 获取 SQL 字符串的各个部分?

[英]How can i get the parts of a SQL string using C#?

我有一个 SQL 字符串

select Id, Name from Order where Id ='8675' and Name ='Test'

如何使用 C# 获取其中的部分,即from部分, where部分和select部分以:

  • select Id, Name -----> select 部分
  • from Order -----> 从零件
  • where Id ='8675' -----> 其中部分

如果需要,还有任何其他部分,如果他们有group by等?

我尝试了以下

var str = @"select Id, Name from Order where Id ='8675' and Name ='Test'";

        String[] spearator = { "from", "where" };
        String[] strlist = str.Split(spearator,
           StringSplitOptions.RemoveEmptyEntries);  

我现在遇到的问题是它不会忽略大小写,所以如果有 From 它就不会工作。 我怎样才能做到这一点?

String[] strlist = str.ToLower().Split(spearator,
           StringSplitOptions.RemoveEmptyEntries);

在 Split() 之前添加 ToLower()。

我觉得还是用Sqlparser比较好,因为简单的操作是获取不到的。

使用“SqModel”进行分析时可能会出现这种情况。 https://www.nuget.org/packages/SqModel#readme-body-tab

例子

//using SqModel;
//using SqModel.Analysis;
var sq = SqlParser.Parse(@"select Id, Name from Orders where Id ='8675' and Name ='Test'");

Assert.Equal("Id", sq.GetSelectItems()[0].Name);
Assert.Equal("Name", sq.GetSelectItems()[1].Name);
Assert.Equal("Orders", sq.FromClause.TableName);
Assert.Equal("Id = '8675' and Name = 'Test'", sq.Where.ToQuery().CommandText);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM