在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工具,但我还没有找到能让我这样做的功能。有没有类似的工具允许我这样做?
提前表示感谢,并希望我在实现目标方面不会过于暧昧。
答案 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 selection
和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
[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
中选择块的示例