Oracle डाटाबेस में, DECOMPOSE()
फ़ंक्शन अपने स्ट्रिंग तर्क के लिए यूनिकोड अपघटनों में से एक को लागू करने का परिणाम देता है। अपघटन दूसरे (वैकल्पिक) तर्क द्वारा निर्धारित किया जाता है।
यह COMPOSE()
. के विपरीत है समारोह।
सिंटैक्स
वाक्य रचना इस प्रकार है:
DECOMPOSE( string [, { 'CANONICAL' | 'COMPATIBILITY' } ] )
जहां दोनों तर्क CHAR
. में से कोई भी हो सकते हैं , VARCHAR2
, NCHAR
, या NVARCHAR2
डेटा प्रकार, या एक प्रकार जिसे परोक्ष रूप से VARCHAR2
. में परिवर्तित किया जा सकता है या NVARCHAR2
।
(वैकल्पिक) दूसरे तर्क के संबंध में:
CANONICAL
यूनिकोड मानक परिभाषा D68 में वर्णित के रूप में विहित अपघटन में परिणाम, और NFD सामान्यीकरण रूप में एक स्ट्रिंग देता है।COMPATIBILITY
यूनिकोड मानक परिभाषा D65 में वर्णित अनुसार संगतता अपघटन में परिणाम, और NFKD सामान्यीकरण प्रपत्र में एक स्ट्रिंग देता है।
विहित अपघटन को लागू करने के लिए डिफ़ॉल्ट व्यवहार है।
उदाहरण
यहां एक उदाहरण दिया गया है:
SELECT DECOMPOSE('ã') FROM DUAL;
परिणाम:
ã
हालांकि, निम्न उदाहरण एक बेहतर प्रदर्शन है:
SELECT ASCIISTR(DECOMPOSE('ã')) FROM DUAL;
परिणाम:
a\0303
यहाँ, हमने ASCIISTR()
. का प्रयोग किया है DECOMPOSE()
. के परिणाम का ASCII संस्करण लौटाने के लिए डेटाबेस कैरेक्टर सेट में।
अगर हम ASCIISTR()
. का उपयोग करते हैं तो यहां क्या होता है? बिना DECOMPOSE()
. के :
SELECT ASCIISTR('ã') FROM DUAL;
परिणाम:
\00E3
गैर यूनिकोड वर्ण
यदि तर्क का वर्ण सेट यूनिकोड वर्ण सेट में से एक नहीं है, तो तर्क बिना संशोधित किए वापस आ जाता है।
उदाहरण:
SELECT ASCIISTR(DECOMPOSE('a')) FROM DUAL;
परिणाम:
a
शून्य तर्क
यदि तर्क null
है , परिणाम null
. है :
SET NULL 'null';
SELECT DECOMPOSE(null)
FROM DUAL;
परिणाम:
null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus SQL SELECT
के परिणामस्वरूप जब भी कोई रिक्त मान उत्पन्न होता है, तो एक रिक्त स्थान लौटाते हैं बयान।
हालांकि, आप SET NULL
का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null
लौटाया जाना चाहिए।
अवैध तर्क गणना
कॉलिंग DECOMPOSE()
बिना किसी तर्क के त्रुटि उत्पन्न होती है:
SELECT DECOMPOSE()
FROM DUAL;
परिणाम:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function"
और बहुत अधिक तर्क देने से भी त्रुटि होती है:
SELECT DECOMPOSE('a', 'b')
FROM DUAL;
परिणाम:
Error report - ORA-12702: invalid NLS parameter string used in SQL function