在 select 子句中使用 equals 设置列别名
Using equals in a select clause to set column aliases
今天我看到有人使用这种语法 (A) 在 sql select.
中设置列别名
一个
Select [ColumnAlias] = Column1 FROM Table
乙
平时我用
Select Column1 AS [ColumnAlias] FROM Table
我曾使用 =
设置局部变量,但从未作为别名。 Select @LocalVar = Column1 FROM Table
有什么理由比 A 更喜欢 B 吗?我在 A 搜索上似乎找不到太多内容。
支持 equals 语法的 RDBMS 不多,但由于类似于为变量赋值,这当然是一种看待它的方式,虽然我找不到参考,但采用这种语法可能是为了鼓励开发人员采用 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
也被认为更 标准 因为相同的语法可用于别名 tables、视图和其他记录集 SQL 查询.
It is worth noting that AS
is technically optional in most RDBMS, so you could leave it out altogether, but doing this can lead to other issues, especially if the alias you wanted to use actually exists as a real name of a column or a table. Reasons to use 'AS' are documented here: https://www.databasestar.com/sql-alias/
因此,虽然这些变体都可以为 SQL 服务器中的列添加别名:
SELECT Column1 AS [alias] from Table
SELECT Column1 AS 'alias' from Table
SELECT Column1 [alias] FROM Table
SELECT [alias] = Column1 FROM Table
只有 AS
(或忽略它)可以为 table
起别名
SELECT Column1 AS [alias] from Table as t
SELECT Column1 [alias] FROM Table t
SELECT Column1 alias FROM Table [t]
以下内容不适用于 table 别名
注意,我们不能将 table 别名化为字符串值,它必须是 tokenized name
SELECT Column1 AS 'alias' from Table AS 't'
SELECT [alias] = Column1 FROM t = Table
对于 any 类型的 alias,使用 AS
是所有 table 中最普遍支持的语法在查询中,而不仅仅是列。因此,您会发现它也是最常记录的语法。
今天我看到有人使用这种语法 (A) 在 sql select.
中设置列别名一个
Select [ColumnAlias] = Column1 FROM Table
乙
平时我用
Select Column1 AS [ColumnAlias] FROM Table
我曾使用 =
设置局部变量,但从未作为别名。 Select @LocalVar = Column1 FROM Table
有什么理由比 A 更喜欢 B 吗?我在 A 搜索上似乎找不到太多内容。
支持 equals 语法的 RDBMS 不多,但由于类似于为变量赋值,这当然是一种看待它的方式,虽然我找不到参考,但采用这种语法可能是为了鼓励开发人员采用 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
也被认为更 标准 因为相同的语法可用于别名 tables、视图和其他记录集 SQL 查询.
It is worth noting that
AS
is technically optional in most RDBMS, so you could leave it out altogether, but doing this can lead to other issues, especially if the alias you wanted to use actually exists as a real name of a column or a table. Reasons to use 'AS' are documented here: https://www.databasestar.com/sql-alias/
因此,虽然这些变体都可以为 SQL 服务器中的列添加别名:
SELECT Column1 AS [alias] from Table
SELECT Column1 AS 'alias' from Table
SELECT Column1 [alias] FROM Table
SELECT [alias] = Column1 FROM Table
只有 AS
(或忽略它)可以为 table
SELECT Column1 AS [alias] from Table as t
SELECT Column1 [alias] FROM Table t
SELECT Column1 alias FROM Table [t]
以下内容不适用于 table 别名
注意,我们不能将 table 别名化为字符串值,它必须是 tokenized name
SELECT Column1 AS 'alias' from Table AS 't'
SELECT [alias] = Column1 FROM t = Table
对于 any 类型的 alias,使用 AS
是所有 table 中最普遍支持的语法在查询中,而不仅仅是列。因此,您会发现它也是最常记录的语法。