对SQL Server中的INSERT语句中指定的列忽略表别名

时间:2016-03-11 09:37:39

标签: sql sql-server tsql

我在其中一个博客中看到了上述问题。但无法在任何地方找到答案。也许这里的SQL Server专家可以帮助我。

CREATE TABLE #DEMO (VALUE1 INT, VALUE2 VARCHAR(10))

CREATE TABLE #DEMO1 (VALUE1 INT, VALUE2 VARCHAR(10))

INSERT INTO #DEMO VALUES (1, '10')

INSERT INTO #DEMO1 (a.a.a.value1,b.b.b.value2)
    SELECT
        Value1, Value2
    FROM #DEMO

如果看到insert语句,我在插入的列中指定了一些别名。令我不知道的是,SQL Server在执行语句时没有抛出任何错误。这背后的原因是什么?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

此地方的列名列表是#DEMO1表中的名称列表,因此限定符没有任何意义,很可能只是被忽略。

有趣的是,为什么它不会引起语法错误,如果你想使用列名作为aaavalue1那么你必须将名字放在[]或""中。