当AS关键字是可选的与需要时是否存在“规则集”,或者它是否仅基于上下文,基于其使用的语句的语言规范?
例如,当用于别名时,它是可选的
当用于声明变量时它也是可选的(我相信也使用cast
)
但是在创建UDF和过程时它不是可选的。
答案 0 :(得分:1)
您实质上是在询问AS关键字何时(以及为什么)是可选的或必需的语言设计决策。虽然如果没有参考设计委员会会议的会议记录就无法明确回答,但可能需要确切地说明需要制作明确的语法,并在其他地方选择以保持自然语言质量< / strong>最初由语言创建者支持。
答案 1 :(得分:0)
直观地说,AS
关键字在用于创建别名时似乎是选项,但在其他情况下则是必需的。我相信它也是CAST
声明的一部分。
此外,这个现有问题可能比您找到的问题更具相关性:
答案 2 :(得分:0)
我没有任何正式的规则,但从实际的角度来看,对于列别名,我总是使用AS,因为IMO有时会使代码的意图更容易理解。
e.g。 :
create table dbo.Table1 (id int primary key, col1 varchar(100), col2 varchar(100), Name varchar(100))
insert dbo.Table1 (id, col1, col2, name) values (1, 'this is col1', 'this is col2', 'this is name')
GO
select col1, col2 Name from dbo.Table1 -- X
select col1, col2 as Name from dbo.Table1 -- Y
现在,X和Y行都会给你相同的结果。在第X行中,可能不清楚编码器是否输入拼写错误并在col2和Name之间留下逗号。在第Y行中,似乎编码器显然想要将col2作为列名“Name”返回。
这可能不是最好的例子,但是我发现类似于上面的问题是由于省略了“as”而导致错别字的地方。