gpt4 book ai didi

c# - 正则表达式 - 订购多行 SQL 字符串

转载 作者:行者123 更新时间:2023-11-30 21:05:37 25 4
gpt4 key购买 nike

给定一个字符串,例如:

CREATE TABLE [dbo].[Table1] (
[Id] [int] NOT NULL,
[Title] [nvarchar](255) NULL
)

ALTER TABLE [dbo].[Table1] ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ([Id])

INSERT INTO [dbo].[Table1] ([Id], [Title]) VALUES ('Home', NULL)

CREATE TABLE [dbo].[Table2] (
[Id] [int] NOT NULL,
[Title] [nvarchar](255) NULL
)

...

我将如何对语句进行排序,以便 CREATE TABLE 位位于顶部。我猜我将不得不使用正则表达式,但我不确定我从那里去哪里。

非常感谢您的帮助。谢谢

最佳答案

享受 LINQ 带来的乐趣。

var sql = @"CREATE TABLE [dbo].[Table1] (
[Id] [int] NOT NULL,
[Title] [nvarchar](255) NULL
)

ALTER TABLE [dbo].[Table1] ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ([Id])

INSERT INTO [dbo].[Table1] ([Id], [Title]) VALUES ('Home', NULL)

CREATE TABLE [dbo].[Table2] (
[Id] [int] NOT NULL,
[Title] [nvarchar](255) NULL
)
";
var statementOrder = new[] { "CREATE", "ALTER", "INSERT" };
var statements = from statement in Regex.Split(sql, "\n\r")
let trimStatement = statement.Trim()
let statementType = trimStatement.Substring(0, trimStatement.IndexOf(' '))
orderby Array.IndexOf(statementOrder, statementType)
select trimStatement;
var newSql = String.Join("\n\r", statements.ToArray());

关于c# - 正则表达式 - 订购多行 SQL 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11593577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com