2010-07-01 69 views
7

我有一個查詢中的函數調用,並且該結果必須返回兩個名稱。我們如何爲SQL中的列提供多個別名?

例子:

SELECT myFunction(column1) as Name1, column2 as Name2 FROM myTable 

我想myFunction的結果在兩個不同的列被返回。這可能沒有在列列表中進行另一個函數調用?

回答

11

你不能直接給一個名稱的兩個別名,但你可以在派生查詢重複列:

SELECT name1, name1 AS name2 FROM 
    (SELECT myFunction(column1) As Name1 From MyTable) base; 

你也可以簡單複製的函數調用。如果函數是確定性的,那麼優化器可能只調用一次。 (但當然,檢查查詢計劃。)

1
SELECT myFunction(column1) as Name1, myFunction(column1) as Name2 FROM myTable 

我猜這就是你的意思。這通常用於需要下拉列表的返回值和顯示值的框架中。例如,

select name as DisplayVal, name as ReturnVal from Table 
+1

它不會使兩個函數調用獲得相同的值嗎? – Jenn 2010-07-01 11:08:39

+0

@Jenn,是的。 – 2010-07-01 11:30:11

+0

@Jenn如果函數是確定性的,它只會被調用一次。 – 2010-07-01 12:26:07

相關問題