减少T-SQL中Insert中的值重复

减少T-SQL中Insert中的值重复,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试改进一个由前开发人员编写的T-SQL过程,正如您所看到的,它包含大量空值: INSERT INTO #titles VALUES ( NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL

我正在尝试改进一个由前开发人员编写的T-SQL过程,正如您所看到的,它包含大量空值:

    INSERT INTO #titles
    VALUES (
        NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,'ABDABCABSBD'
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
        ,NULL
我不想更改表标题中插入的数据(这是必要的)。 我需要做的是存储一定数量的数据(例如,这里@storing15Null中有多个Null),以便直接使用此变量,而不是在每次定义表标题时复制15次Null

IF @Group = 11
BEGIN
    INSERT INTO #titles
    VALUES (
                @storing15Null
                ,'ZZZZZZ'
                ,'PPPPP'
                @storing10Null)
END

ELSE IF @Group = 17
BEGIN
    INSERT INTO #titles
    VALUES (
                @storing15Null
                ,'ABCABCABC'
                @storing15Null)
 END

例如,使用一个变量或任何允许我存储特定数量的项目的东西,这些项目将转到值。

任何具有默认值的列都不需要指定。由于可空列的默认值为
NULL
,因此您只需将它们从
INSERT
语句中删除即可

为此,您需要显式指定列名,您应该始终这样做,因为列可以重新排序:

插入到#标题中
(第16、17栏)
价值观
(“zzzz”、“PPPPP”);

“我不知道你反对我什么”没什么,我显然一直在试图帮助你,但你一直在移动目标帖子和/或向试图帮助你的人隐藏信息(通过删除和重新发布问题)。“帮助我们帮助你…”你说此时我应该重写并发布一个全新的问题“我从来没有说过要转发,我说的是重写;有一个特性。对象不能用数据@stbr“突然存在”。唯一的例外是
into
子句,它既创建对象又创建对象(基于结果集数据的定义),然后将结果集插入到所述对象中。如果您要创建一个表(无论是永久的、临时的、可变的还是甚至是类型的),您需要明确定义并将数据分别插入到创建/声明中。
INSERT-INTO#titles-VALUES(…
这似乎与您的模糊问题有关。您发布的第一个查询插入了一行(从sql语句的一个片段中可以最好地判断出来)。它显示了原始程序员和您的懒惰。停止这种懒惰。提供一个列列表,您只需要写“NULL”一旦进入values子句。您甚至不需要添加
NULL
的列,您可以将它们完全从
INSERT
中删除。因此,如果您指定了列名(无论如何都应该这样做),您可以
插入到#titles(col16,col17)值('ZZZZZZ',PPPPP')