2013-10-10 6 views
5

मैं बेनकाब करने के लिए एक छोटे से समस्या आ रही है है शामिल हैं:HQL समारोह केवल संख्या

मैं एक इकाई से निकालना चाहते हैं, इसका नाम "CustomerDetail" सभी पंक्तियों लगता है जहां एक विशेष क्षेत्र (कोड) केवल संख्यात्मक पात्र हैं।

एचक्यूएल में एसक्यूएल सर्वर की तरह ISNUMERIC() फ़ंक्शन मौजूद नहीं है, और रेगेक्स फ़ंक्शन को लागू करने की संभावना मौजूद नहीं है।

SELECT C 
FROM CustomerDetail C 
WHERE C.code NOT LIKE '%A%' 
AND C.code NOT LIKE '%B%' 

और इसलिए इस हालत समग्र Alfabetical पत्र और विशेष वर्ण दोहराते:

सम्भावित समाधान निम्नलिखित है।

मुझे लगता है कि यह एक गरीब समाधान है, प्रदर्शन का स्तर कम (तरह की भारी संख्या) के साथ

कृपया, आप मुझे एक अधिक स्मार्ट समाधान सलाह कर सकते हैं?

अग्रिम में धन्यवाद

पीएस मेरा आवेदन बहु डीबीएमएस है इसलिए मैं एसक्यूएल क्वेरी

उत्तर

1

मेजर एडिट: मेरा बुरा, मुझे लगता है कि एक काम करने वाला फ़ंक्शन न्यूमेरिक फ़ंक्शन है जो गलत है। doc के अनुसार एचक्यूएल डेटाबेस स्केलर फ़ंक्शंस का समर्थन करता है - और SQL सर्वर (जिस पर मैंने परीक्षण किया) में एक संख्यात्मक() फ़ंक्शन है।

विकल्प 1::

मैं अब दो विकल्प देखेंगे आप जो (SQLServer पर isNumeric() जैसे कार्यों में निर्माण का इस्तेमाल विभिन्न डेटाबेस के लिए अलग HQLs लिख सकते हैं, लेकिन उस के मामले में वापस एक बड़ा कदम है "लिखने एक बार हर जगह चलाएं ")

विकल्प 2: SQL में एक कस्टम फ़ंक्शन के साथ अनुपालन करने के लिए हर डेटाबेस के लिए लिखें और इसे अपनी बोली में उसी नाम से पंजीकृत करें।

मुझे पता है, दोनों विकल्प बहुत ही भयानक नहीं हैं लेकिन मैं इसे काम करने के किसी अन्य तरीके से नहीं सोच सकता।

+0

प्रिय, एचक्यूएल नहीं मिला है संख्यात्मक (जैसा कि मैंने अपने प्रश्न में लिखा है) –

+0

क्या आपने मेरा समाधान ('' 1' सहित) का परीक्षण किया है? क्योंकि, जैसा कि मैंने अपने उत्तर में लिखा है - यह काम करता है ... –

+0

इससे पहले कि मैं एक प्रश्न लिखूं ... मैं अपना कोड आज़माता हूं। यह एचक्यूएल का अध्याय 14 है: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html अनुमत कार्यों को दिखाएं। –

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