7

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

SELECT stuff as mask

有没有一种方法可以指定列别名而不在结果集中返回该列数据?本质上,我希望能够通过执行以下操作使我的查询变得干净:

SELECT doManipulationStuff(cleanCompactAlias)

在哪里

reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
4

2 回答 2

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 中,而在调用函数时忘记它。您仍然必须在某处进行别名处理,但这至少可以使其远离主查询,使其更具可读性。

于 2013-04-23T17:30:40.587 回答
3

您可以使用子查询:

select doManipulationStuff(cleanCompactAlias)
from (select t.*, reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
      . . .
     ) t
于 2013-04-23T17:29:26.253 回答