2013-04-23 8 views
5

wiem, że mogę określić alias kolumny tak:SQL nazwa użycie kolumna alias bez wybierania

SELECT stuff as mask 

Czy istnieje sposób mogę określić alias kolumny bez powracającego że dane kolumn w wyniku ustawić? Zasadniczo, chcę być w stanie dokonać moje zapytanie czysty wykonując:

SELECT doManipulationStuff(cleanCompactAlias) 

Gdzie

reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias 

Odpowiedz

4

Można użyć wyrażenia tabelowego (CTE), aby utworzyć podzapytanie z aliasami:

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

W ten sposób możesz umieścić wszystkie swoje aliasing w CTE i po prostu zapomnieć o tym podczas wywoływania swoich funkcji. Nadal musisz zrobić aliasing gdzieś, ale to przynajmniej utrzymuje go z głównego zapytania, aby uczynić go bardziej czytelnym.

+0

... tylko jeśli używasz wersji programu SQL Server, który ją obsługuje. – Yuck

+0

Istnieją inne RDBMS, które obsługują CTE. Ale punkt widzenia - nie wszystkie obsługują tę składnię. Uważam, że MySQL tego nie robi. –

3

Można użyć podzapytania:

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