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

时间:2015-11-30 13:58:09

标签: sql sql-server ssms

在Managagement Studio 2008 R2内部编写SQL时,我一直在努力寻找一些方法来简化编辑/向Insert-clauses中的相应列添加值。

假设以下代码:

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,这就变得更加困难。即使启用了行号。

有没有办法让鼠标悬停在值列表中的值上以查看它属于哪个列?

在我的梦想世界中,我会右键点击Insert Into中的列名,然后选择“Go to value ...”。

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

提前表示感谢,并希望我在实现目标方面不会过于暧昧。

4 个答案:

答案 0 :(得分:2)

我不知道有任何设施可以做到这一点,但是当我遇到这个问题时,我通常只是在代码中添加注释,例如:

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

答案 1 :(得分:1)

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

虽然需要更多输入,但我更喜欢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
;

答案 2 :(得分:1)

如果您重新构建查询以使用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,
           . . .;

答案 3 :(得分:0)

您可以使用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。最后填写所需的值。

enter image description here

https://www.mssqltips.com/tipimages2/2786_ssms_shift_alt_select.png

中选择块的示例