一尘不染

为什么在INSERT语句的列列表中忽略点分隔的前缀?

sql

我刚刚遇到了一些我认为无效的SQL语法,但实际上工作正常(至少在SQL Server中)。

给定此表:

create table SomeTable (FirstColumn int, SecondColumn int)

以下insert语句执行没有错误:

insert SomeTable(Any.Text.Here.FirstColumn, It.Does.Not.Matter.What.SecondColumn)
values (1,2);

插入语句完成而没有错误,并且检查select * from SomeTable表明它确实正确地执行了。参见小提琴:http
://sqlfiddle.com/#!6/ 18de0/2

SQL Server似乎只是忽略除插入列表中给出的列名的最后一部分以外的任何内容。

实际问题:

可以将其视为记录的行为吗?

关于为什么这样做的任何解释也将不胜感激。


阅读 184

收藏
2021-03-10

共1个答案

一尘不染

据报道,这是Connect上的一个错误,尽管最初令人鼓舞,但该项目的当前状态为“无法修复”,因此已关闭。

Order by子句以前的行为类似,但是在SQL Server 2005中已修复。

2021-03-10