今天看到有人用这种语法(A)在sql select中设置列别名。
一种
Select [ColumnAlias] = Column1 FROM Table
乙
通常我使用
Select Column1 AS [ColumnAlias] FROM Table
我曾经=
设置局部变量,但从不作为别名。Select @LocalVar = Column1 FROM Table
有什么理由更喜欢 B 而不是 A?我似乎在 A 搜索中找不到太多内容。
今天看到有人用这种语法(A)在sql select中设置列别名。
Select [ColumnAlias] = Column1 FROM Table
通常我使用
Select Column1 AS [ColumnAlias] FROM Table
我曾经=
设置局部变量,但从不作为别名。Select @LocalVar = Column1 FROM Table
有什么理由更喜欢 B 而不是 A?我似乎在 A 搜索中找不到太多内容。
没有多少 RDBMS 支持equals语法,但它通常被 VB/C# 应用程序开发人员使用,由于与为变量赋值相似,因此学习 MS SQL Server,这当然是一种看待它的方式,虽然我找不到参考,这种语法可能是为了鼓励开发人员采用 MS SQL 平台。
问题是这种用法是模棱两可的,因为可以使用相同的语法将列的值实际分配给变量,或者在UPDATE
语句中将值分配给另一列:
-- assign the variable the value from Column1
SELECT @MyVar = Column1 FROM Table
-- Update Column2 with the value from Column1
UPDATE Column2 = Column1 FROM Table
所有 SQL RDBMS 都支持使用AS
关键字,因为类似的语法只存在于CAST
函数内部,所以它的歧义性要小得多。
AS
更具表现力,很清楚意图是什么,不能被误认为是作业。使用AS
也被认为更标准,因为相同的语法可用于 SQL 查询中的表、视图和其他记录集的别名。
值得注意的是,
AS
在大多数 RDBMS 中,这在技术上是可选的,因此您可以完全忽略它,但这样做可能会导致其他问题,特别是如果您要使用的别名实际上作为列或表的真实名称存在。此处记录了使用“AS”的原因:https ://www.databasestar.com/sql-alias/
因此,虽然这些变体都可以为 SQL Server 中的列起别名:
SELECT Column1 AS [alias] from Table
SELECT Column1 AS 'alias' from Table
SELECT Column1 [alias] FROM Table
SELECT [alias] = Column1 FROM Table
仅AS
(或省略)适用于表的别名
SELECT Column1 AS [alias] from Table as t
SELECT Column1 [alias] FROM Table t
SELECT Column1 alias FROM Table [t]
以下不适用于表别名
注意这里我们不能将表别名为字符串值,它必须是标记化的名称
SELECT Column1 AS 'alias' from Table AS 't'
SELECT [alias] = Column1 FROM t = Table
对于查询中的任何类型的别名,使用AS
是所有表中最常支持的语法,而不仅仅是列。出于这个原因,您会发现它也是最常记录的语法。