2011-12-14 22 views
20

स्ट्रिंग concatenation के लिए एक जेपीए concat ऑपरेटर है?जेपीए कंसैट ऑपरेटर

मुझे पता है कि एक जेपीए CONCAT फ़ंक्शन है, हालांकि इसके बदसूरत कई तारों को संयोजित करने के लिए उपयोग करने के लिए उपयोग किया जाता है।

CONCAT(CONCAT(CONCAT(cola,colb),colc),cold) 

विक्रेताओं ओरेकल प्रस्ताव || तरह माइक्रोसॉफ्ट की पेशकश + जैसे कुछ अन्य। ताकि मैं की तरह

cola || colb || colc || cold 

एक प्रश्न मैंने कोशिश की + SQL सर्वर के साथ openjpa का उपयोग कर बना सकते हैं वहाँ एक मानक जेपीए संयोजन ऑपरेटर है, लेकिन यह अवैध JPQL हो रहा है। मुझे oracle reference में ऐसे ऑपरेटर से संबंधित कुछ भी नहीं मिला।

उत्तर

33

CONCAT समारोह अनुभाग 4.6.17.2.1 से, जेपीए 2.0में बढ़ाया गया था अधिक से अधिक 2 पैरामीटर प्रदान करने की अनुमति के लिए (स्ट्रिंग कार्य) विनिर्देश की:

CONCAT(string_primary, string_primary {, string_primary}*) 

जेपीए 1 में यह बिल्कुल दो पैरामीटर तक ही सीमित था।

+0

हम्म। अजीब। http://download.oracle.com/otn-pub/jcp/persistence-2.0-fr-eval-oth-JSpec/persistence-2_0-final-spec.pdf इस फ़ंक्शन को सूचीबद्ध करता है जैसा आपने वर्णन किया है। ओपनजेपी 2.1.1 जेपीए 2.0 होना चाहिए। –

+1

ओपनजेपीए 2 को इस वाक्यविन्यास का समर्थन करना चाहिए, क्या आप सटीक क्वेरी और अपवाद प्राप्त कर सकते हैं? –

7

आप एकाधिक तारों के लिए जेपीए कंसैट फ़ंक्शन का उपयोग कर सकते हैं।

उदाहरण के लिए:

CONCAT(cola, colb, colc, cold) 
+1

की जांच की गई है। मुझे ओपनजेपीए के साथ अपवाद मिलता है। संदर्भ जो मैंने लिंक किया है (http://docs.oracle.com/cd/E16764_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_string_fun) केवल दो तर्क दिखाता है। –

6

तुम भी एक CONCATENATE ऑपरेटर के रूप में || उपयोग करते हैं, को देखने के on the documentation

HQL संयोजन (concat) समारोह का समर्थन करने के अलावा एक संयोजन ऑपरेटर को परिभाषित करता है सकते हैं। यह जेपीक्यूएल द्वारा परिभाषित नहीं किया गया है, इसलिए पोर्टेबल अनुप्रयोगों को इसका उपयोग करने से बचना चाहिए। कॉन्सटेनेशन ऑपरेटर एसक्यूएल कंसटेनेशन ऑपरेटर - || से लिया जाता है।

उदाहरण 11.1 9। संयोजन आपरेशन उदाहरण

select 'Mr. ' || c.name.first || ' ' || c.name.last 
from Customer c 
where c.gender = Gender.MALE