Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

हाइबरनेट एचक्यूएल में ओरेकल के regexp_like का उपयोग कैसे करें?

वास्तव में, आप REGEXP_LIKE के परिणाम की तुलना PL/SQL में सशर्त कथनों को छोड़कर किसी भी चीज़ से नहीं कर सकते।

ऐसा लगता है कि हाइबरनेट एक रिटर्न टाइप के बिना एक कस्टम फ़ंक्शन को स्वीकार नहीं करता है, क्योंकि आपको हमेशा आउटपुट की तुलना किसी चीज़ से करने की आवश्यकता होती है, अर्थात:

REGEXP_LIKE('bananas', 'a', 'i') = 1

चूंकि Oracle आपको इस फ़ंक्शन के परिणाम की तुलना कुछ भी नहीं करने की अनुमति देता है, इसलिए मैं केस कंडीशन का उपयोग करके एक समाधान लेकर आया:

public class Oracle10gExtendedDialect extends Oracle10gDialect {

    public Oracle10gExtendedDialect() {
        super();
        registerFunction(
          "regexp_like", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN,
          "(case when (regexp_like(?1, ?2, ?3)) then 1 else 0 end)")
        );
    }

}

और आपका एचक्यूएल इस तरह दिखना चाहिए:

REGEXP_LIKE('bananas', 'a', 'i') = 1

यह काम करेगा :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्सर और बैच डीएमएल के साथ अद्यतन लॉक के लिए चयन की बातचीत

  2. रॉ(16) कॉलम में यूयूआईडी कैसे डालें

  3. ORA-00054:संसाधन व्यस्त है और NOWAIT निर्दिष्ट या समय समाप्त होने के साथ प्राप्त करें

  4. ओरेकल रेगेक्स - के साथ शुरू नहीं होता है और समाप्त नहीं होता है

  5. वीएस2015 के लिए एट्यूनिटी द्वारा ओरेकल के लिए एसएसआईएस माइक्रोसॉफ्ट कनेक्टर नहीं दिखा रहा है