Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql AS关键字何时是可选的?_Sql_Sql Server_Tsql_Alias - Fatal编程技术网

Sql AS关键字何时是可选的?

Sql AS关键字何时是可选的?,sql,sql-server,tsql,alias,Sql,Sql Server,Tsql,Alias,根据AS关键字所用语句的语言规范,AS关键字是可选的还是必需的,是否有“规则集” 例如,当用于别名时,它是可选的。 它在用于声明变量时也是可选的(我相信也可以使用cast。 但是,在创建UDF和过程时,它不是可选的。直观地说,在使用AS关键字创建别名时,它似乎是可选的,但在其他方面是必需的。我认为它也是CAST声明的一部分 此外,这个现有问题可能比您发现的问题更相关: 我没有任何正式的规则,但是从实用的角度来看,对于列别名,我总是使用AS,因为在我看来,它有时使代码的意图更容易遵循 e、 g:

根据AS关键字所用语句的语言规范,AS关键字是可选的还是必需的,是否有“规则集”

例如,当用于别名时,它是可选的。
它在用于声明变量时也是可选的(我相信也可以使用
cast


但是,在创建UDF和过程时,它不是可选的。

直观地说,在使用
AS
关键字创建别名时,它似乎是可选的,但在其他方面是必需的。我认为它也是
CAST
声明的一部分

此外,这个现有问题可能比您发现的问题更相关:


我没有任何正式的规则,但是从实用的角度来看,对于列别名,我总是使用AS,因为在我看来,它有时使代码的意图更容易遵循

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”而导致的问题,因为“as”很难看到拼写错误

本质上,您要求语言设计决定AS关键字何时(以及为什么)是可选的或必需的。虽然在没有参考设计委员会会议记录的情况下,这是不可能明确回答的,但在需要明确语法的地方,可能需要明确语法,在其他地方可以选择保持语言创建者最初支持的自然语言质量。

,除非编译器需要,否则我从不使用AS。我想每个人都有自己的,但我使用了更多的空格和换行符来格式化我的SQL。有趣的是,不同的东西适用于不同的人。@iliketocode:语言标准规范中可能有注释;但这通常是非常枯燥的阅读。