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

bms*_*dev 11 sql t-sql sql-server

我在其中一个博客中看到了上述问题.但无法在任何地方找到答案.也许这里的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
Run Code Online (Sandbox Code Playgroud)

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

小智 1

此位置的列名称列表是 #DEMO1 表中的名称列表,因此限定符没有任何含义,很可能会被忽略。

有趣的是,为什么它不会出现语法错误,无论哪种方式,如果您想使用列名称作为aaavalue1,那么您必须将名称放在[]或“”中。