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

@ जेन, हाँ यह करता है। –

+0

@ जेन अगर फ़ंक्शन निर्धारिती है, तो इसे केवल एक बार बुलाया जाएगा। –

संबंधित मुद्दे