2013-04-23 13 views
5

So che posso specificare un alias di colonna in questo modo:SQL uso colonna nome alias senza selezionare

SELECT stuff as mask 

C'è un modo per specificare un alias di colonna senza ritorno che i dati di colonna nel set di risultati? In sostanza, voglio essere in grado di fare la mia domanda pulita facendo:

SELECT doManipulationStuff(cleanCompactAlias) 

Dove

reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias 

risposta

4

È possibile utilizzare un'espressione di tabella comune (CTE) per creare una sottoquery con alias:

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

In questo modo puoi mettere tutto il tuo aliasing nel CTE e semplicemente dimenticarlo quando chiami le tue funzioni. Devi ancora fare l'aliasing da qualche parte, ma questo almeno lo mantiene fuori dalla tua query principale per renderlo un po 'più leggibile.

+0

... solo se si sta utilizzando una versione di SQL Server che la supporta. – Yuck

+0

Esistono altri RDBMS che supportano i CTE. Ma punto preso - non tutti supportano questa sintassi. Credo che MySQL no. –

3

Si potrebbe utilizzare una sottoquery:

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