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

Oracle में REGEXP_COUNT () फ़ंक्शन

Oracle में, REGEXP_COUNT() फ़ंक्शन किसी स्रोत स्ट्रिंग में पैटर्न के आने की संख्या लौटाता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

REGEXP_COUNT (source_char, pattern [, position [, match_param]])

कहां:

  • source_char एक चरित्र अभिव्यक्ति है जो खोज मूल्य के रूप में कार्य करती है।
  • pattern नियमित अभिव्यक्ति है।
  • position एक धनात्मक पूर्णांक है जो निर्दिष्ट करता है कि खोज कहाँ से शुरू करनी है। डिफ़ॉल्ट 1 है , यानी, पहले अक्षर पर खोज शुरू करें।
  • match_param आपको फ़ंक्शन के डिफ़ॉल्ट मिलान व्यवहार को बदलने देता है। उदाहरण के लिए, यह आपको केस-सेंसिटिविटी निर्दिष्ट करने की अनुमति देता है कि कैसे कई लाइनों और रिक्त स्थान से निपटा जाता है, आदि।

उदाहरण

यहां REGEXP_COUNT() using का उपयोग करने का एक बुनियादी उदाहरण दिया गया है ओरेकल में:

SELECT 
    REGEXP_COUNT('My dog drinks beer', 'd.g')
FROM DUAL;

परिणाम:

1

इस मामले में एक मैच है।

नियमित अभिव्यक्ति बहुत शक्तिशाली हो सकती है, और यह उदाहरण एक बहुत ही सरल उदाहरण का उपयोग करता है। REGEXP_COUNT() . का उपयोग करने के लिए प्रभावी ढंग से, आपको वांछित परिणाम के लिए उपयोग करने के लिए सही पैटर्न जानने की आवश्यकता होगी। इस पृष्ठ के उदाहरण REGEXP_COUNT() . पर केंद्रित हैं नियमित अभिव्यक्तियों पर नहीं, स्वयं कार्य करें।

कोई मिलान नहीं

यहां एक उदाहरण दिया गया है जहां कोई मेल नहीं है:

SELECT REGEXP_COUNT('My dogs like dregs', 't.g')
FROM DUAL;

परिणाम:

0

कोई मेल नहीं है, इसलिए 0 लौटा दिया गया है।

एकाधिक मिलान

कई मिलानों वाला एक उदाहरण यहां दिया गया है:

SELECT 
    REGEXP_COUNT('My dogs have dags', 'd.g')
FROM DUAL;

परिणाम:

2

इस मामले में, दो मैच हैं।

प्रारंभ स्थिति

आप एक प्रारंभिक स्थिति निर्दिष्ट कर सकते हैं:

SELECT 
REGEXP_COUNT('My dogs have dags', 'd.g', 8)
FROM DUAL;

परिणाम:

1

तो यहां हमें केवल एक मैच मिलता है। ऐसा इसलिए है क्योंकि खोज पहली घटना (स्थिति 8) के बाद तक शुरू नहीं होती है।

केस संवेदनशीलता

REGEXP_COUNT() फ़ंक्शन ओरेकल के संयोजन निर्धारण नियमों का पालन करता है, जो पैटर्न के साथ स्ट्रिंग का मिलान करते समय उपयोग किए जाने वाले संयोजन को परिभाषित करता है।

हालांकि, आप वैकल्पिक चौथे तर्क के साथ केस-संवेदनशीलता को स्पष्ट रूप से निर्दिष्ट कर सकते हैं। जब आप ऐसा करते हैं, तो यह निर्धारित संयोजन की किसी भी केस-संवेदनशीलता या उच्चारण-संवेदनशीलता को ओवरराइड करता है।

आप i . निर्दिष्ट कर सकते हैं केस-असंवेदनशील मिलान और c . के लिए केस-संवेदी मिलान के लिए।

यहां एक उदाहरण दिया गया है:

SELECT 
    REGEXP_COUNT('My Cats', 'c.t', 1) AS "Default",
    REGEXP_COUNT('My Cats', 'c.t', 1, 'i') AS "Case Insensitive",
    REGEXP_COUNT('My Cats', 'c.t', 1, 'c') AS "Case Sensitive"
FROM DUAL;

परिणाम:

   Default    Case Insensitive    Case Sensitive 
__________ ___________________ _________________ 
         0                   1                 0

यहाँ, मेरा मिलान केस-संवेदी है। अन्य दो स्ट्रिंग्स को क्रमशः केस-असंवेदनशील और केस-संवेदी मिलान के लिए मजबूर किया गया था।

अशक्त तर्क

चौथे तर्क के अपवाद के साथ, null providing प्रदान करना एक तर्क के लिए null . में परिणाम होता है :

SET NULL 'null';
SELECT 
    REGEXP_COUNT(null, 'c.t', 1, 'i') AS "1",
    REGEXP_COUNT('Cat', null, 1, 'i') AS "2",
    REGEXP_COUNT('Cat', 'c.t', null, 'i') AS "3",
    REGEXP_COUNT('Cat', 'c.t', 1, null) AS "4"
FROM DUAL;

परिणाम:

      1       2       3    4 
_______ _______ _______ ____ 
   null    null    null    0

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null वापस किया जाना चाहिए।

तर्कों की गलत संख्या

फ़ंक्शन के लिए कोई तर्क नहीं पारित करने, या बहुत कम, एक त्रुटि में परिणाम:

SELECT REGEXP_COUNT()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REGEXP_COUNT()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

यही बात तब लागू होती है जब हम बहुत अधिक तर्क देते हैं:

DUAL से
SELECT REGEXP_COUNT('Cat', 'c.t', 1, 'i', 'oops')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT REGEXP_COUNT('Cat', 'c.t', 1, 'i', 'oops')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

अधिक जानकारी

REGEXP_COUNT() फ़ंक्शन (साथ ही साथ Oracle का रेगुलर एक्सप्रेशन का अन्य कार्यान्वयन) IEEE पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस (POSIX) रेगुलर एक्सप्रेशन मानक और यूनिकोड कंसोर्टियम के यूनिकोड रेगुलर एक्सप्रेशन दिशानिर्देशों के अनुरूप है।

अधिक जानकारी और REGEXP_COUNT() . के उदाहरणों के लिए Oracle दस्तावेज़ देखें समारोह।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या Oracle में फ़िल्टर्ड इंडेक्स अवधारणा है?

  2. SQL डेवलपर में SQL मॉनिटरिंग

  3. आरडीएलसी लोकलरिपोर्ट एक्सेल में निर्यात वास्तव में धीमा

  4. Oracle:ORDER BY क्लॉज के संयोजन के साथ ROWNUM का उपयोग करके तालिका कॉलम को अपडेट करना

  5. Oracle Apps 11i/R12 में FRD ट्रेस कैसे जनरेट करें?