2010-07-01 4 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

+0

@Jenn, да. –

+0

@Jenn Если функция детерминирована, она будет вызываться только один раз. –

Смежные вопросы