我知道我可以像这样指定列别名:
SELECT stuff as mask
有没有办法可以指定列别名而不用在结果集中返回该列数据?从本质上讲,我希望能够通过执行以下操作来清理我的查询:
SELECT doManipulationStuff(cleanCompactAlias)
其中
reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
答案 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