【问题标题】:Create columns with a loop使用循环创建列
【发布时间】:2016-03-07 11:36:02
【问题描述】:

我有一个 MVC 项目,并且我想在数据库中创建一个表,其中包含一个列和多个列在一个循环中,以计算在我的解决方案中某处定义的列表的计数。如何做到这一点?

CREATE TABLE [dbo].[Table]
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [tag] NVARCHAR(MAX) NOT NULL

    while... <something becomes MyList.Count>
    [value] NVARCHAR(MAX)
)

【问题讨论】:

  • 您将构建一个 SQL 字符串循环遍历附加列定义的列表,然后执行它。通常以编程方式创建可变数量的列表明该数据属于其自己表中的行。
  • 好的,但是在哪里添加这个 sql 字符串和它的执行?不,它不是列的变量。更像是我拥有的项目列表是可变大小的,我会定期更新它,但我还想为各个元素添加一列,我希望它更自动化。
  • 为什么要这样做?这是一个非常糟糕的设计的标志。

标签: c# sql asp.net sql-server asp.net-mvc


【解决方案1】:

我猜你已经为创建后的循环编写了一个单独的查询,这将是一个ALTER TABLE

喜欢,

WHILE(condition)
BEGIN
    ALTER TABLE Table1 ADD column_name datatype
END

这里,条件应该是计数。列名取决于您传递值的方式。我会将它们作为表格格式的 XML 数据传递,然后将其转换为 SQL 中的表格,然后在更改时循环它们。

喜欢,

WHILE((SELECT COUNT(id) FROM temp))
BEGIN
    EXECUTE('ALTER TABLE Table1 ADD COLUMN '+(SELECT TOP 1 column_name FROM temp)+' NVARCHAR(MAX)')
    DELETE FROM temp WHERE temp.id = (SELECT TOP 1 id FROM temp)
END

希望这可行:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多