如何在 Management Studio 中轻松查找值列表中的列?

How to find column in value list easily in Management Studio?

在 Managagement Studio 2008 R2 中 SQL 中编码时,我一直在尝试寻找一些方法来简化 editing/adding 插入子句中相应列的值。

假设以下代码:

INSERT INTO [Schema].[Table]
                ( [Col1],
                  [Col2],
                  [Col3],
                  [Col4],
                  [Col5],
                  [Col6],
                  [Col7],
                  [Col8],
                  [Col9],
                  [Col10],
                  [Col11],
                  [Col12],
                  [Col13],
                  [Col14],
                  [Col15],
                  [Col16],
                  [Col17],
                  [Col18]

                )
         VALUES
                (
                  232,
                  0,
                  NULL,
                  NULL,
                  0,
                  NULL,
                  NULL,
                  NULL,
                  NULL,
                  NULL,
                  0,
                  NULL,
                  NULL,
                  NULL,
                  NULL,
                  NULL,
                  NULL,
                  NULL

假设我要更改第 11 列中的一个值,我必须开始计数以查看哪个值对应于该列。也许在这个例子中并没有那么困难,但许多现实生活中的表都包含很多列。如果值列表中有很多 NULLS,这将变得更加困难。即使启用了行号。

有没有办法,例如在鼠标悬停在值列表中的值上时显示工具提示,以查看它属于哪一列?

在我的梦想世界中,我会右键单击“插入到”中的列名,然后选择类似 "Go to value..." 的内容。

我正在使用免费的 ApexSQL 工具,但我还没有找到可以让我这样做的功能。有没有类似的工具可以让我这样做?

提前致谢,希望我对我要实现的目标不要太含糊。

我不知道有什么工具可以做到这一点,但是当我 运行 解决这个问题时,我通常只是在代码中添加注释,例如:

    VALUES
                (
                  232,  --Col1
                  0,    --Col2
                  NULL, --Col3
                  NULL, --Col4
                  --etc.
                )

我还没有看到这样的选项。

虽然它需要更多的输入,但我更喜欢 SELECT 而不是 VALUES,因为我可以为输入设置别名,从而节省以后的时间。还可以预览 SELECT 语句(只需突出显示该部分并按 F5 - 非常方便)。

或者,您可以在 SSMS 中打开行号并计算正确的行。其实废了。听起来不是很友好,是吗?

INSERT INTO Schema.Table
    (
        Col1,
        Col2,
        Col3,
        Col4,
        Col5
    )
SELECT
    1       AS Col1,
    0       AS Col2,
    NULL    AS Col3,
    1       AS Col4,
    NULL    AS Col5
;

您可以使用 block selectionINSERT SELECT 来插入一个值:

INSERT INTO [Schema].[Table]( 
     [Col1]
    ,[Col2]
    ,[Col3]
    ,[Col4]
    ,[Col5]
    ,[Col6]
    ,[Col7]
    ,[Col8]
    ,[Col9]
    ,[Col10]
    ,[Col11]
    ,[Col12]
    ,[Col13]
    ,[Col14]
    ,[Col15]
    ,[Col16]
    ,[Col17]
    ,[Col18]
)
SELECT
     [Col1]    = 232
    ,[Col2]    = 0 
    ,[Col3]    = NULL
    ,[Col4]    = NULL
    ,[Col5]    = 0
    ,[Col6]    = NULL
    ,[Col7]    = NULL
    ,[Col8]    = NULL
    ,[Col9]    = NULL
    ,[Col10]   = NULL
    ,[Col11]   = NULL
    ,[Col12]   = 0
    ,[Col13]   = NULL
    ,[Col14]   = NULL
    ,[Col15]   = NULL
    ,[Col16]   = NULL
    ,[Col17]   = NULL
    ,[Col18]   = NULL

关键是像 ,[Column_Name] 这样格式化列,然后使用块选择将它们全部复制。在那之后,另一个块选择并一次键入多个 = NULL。最后填写所需的值。

块选择示例来自:https://www.mssqltips.com/tipimages2/2786_ssms_shift_alt_select.png

如果您重组查询以使用 insert . . . select:

,这可能会更容易
INSERT INTO [Schema].[Table]([Col1], [Col2], [Col3], [Col4], [Col5], [Col6],
                             [Col7], [Col8], [Col9], [Col10], [Col11], [Col12],
                             [Col13], [Col14], [Col15], [Col16], [Col17], [Col18]
                            )
    SELECT 232 as col1,
           0 as col2,
           NULL as col3,
           NULL as col4,
           0 as col5,
           NULL as col6,
           . . .;