SQL使用没有SELECTING的列名别名

时间:2013-04-23 17:27:08

标签: sql select alias

我知道我可以像这样指定列别名:

SELECT stuff as mask

有没有办法可以指定列别名而不用在结果集中返回该列数据?从本质上讲,我希望能够通过执行以下操作来清理我的查询:

SELECT doManipulationStuff(cleanCompactAlias)

其中

reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias

2 个答案:

答案 0 :(得分:4)

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

WITH clean_cte AS
(
  SELECT reallyLong.misleading.andAnnoying.columnName1 as cleanCompactAlias1,
    reallyLong.misleading.andAnnoying.columnName2 as cleanCompactAlias2
)
SELECT doManipulationStuff(cleanCompactAlias1), 
  doManipulationStuff(cleanCompactAlias2)

通过这种方式,您可以将所有别名放入CTE中,并在调用函数时忘记它。你仍然需要在某个地方进行别名,但这至少使它远离你的主查询,使其更具可读性。

答案 1 :(得分:3)

您可以使用子查询:

select doManipulationStuff(cleanCompactAlias)
from (select t.*, reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
      . . .
     ) t