SQL使用没有SELECTING的列名别名

tor*_*omp 6 sql select alias

我知道我可以指定一个列别名,如下所示:

SELECT stuff as mask
Run Code Online (Sandbox Code Playgroud)

有没有办法可以指定列别名而不在结果集中返回该列数据?从本质上讲,我希望能够通过以下方式使我的查询干净:

SELECT doManipulationStuff(cleanCompactAlias)
Run Code Online (Sandbox Code Playgroud)

哪里

reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
Run Code Online (Sandbox Code Playgroud)

Jef*_*erg 4

您可以使用公共表表达式 (CTE) 创建带有别名的子查询:

WITH clean_cte AS
(
  SELECT reallyLong.misleading.andAnnoying.columnName1 as cleanCompactAlias1,
    reallyLong.misleading.andAnnoying.columnName2 as cleanCompactAlias2
)
SELECT doManipulationStuff(cleanCompactAlias1), 
  doManipulationStuff(cleanCompactAlias2)
Run Code Online (Sandbox Code Playgroud)

这样您就可以将所有别名放入 CTE 中,并在调用函数时忘记它。您仍然需要在某处执行别名操作,但这至少将其排除在主查询之外,以使其更具可读性。