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

ORACLE RAW स्ट्रिंग प्रारूप में मानक GUID के लिए

जब आप इसे चुनते हैं तो RAW GUID को VARCHAR में बदलने का एक आसान तरीका है। फिर इसे परिणाम सेट से स्ट्रिंग के रूप में पढ़ें। यह सूत्र है:

select 
 upper(
    regexp_replace(
        regexp_replace(
            hextoraw('9BB2A2B8DF8747B0982F2F1702E1D18B'),
            '(.{8})(.{4})(.{4})(.{4})(.{12})',
            '\1-\2-\3-\4-\5'
        ),
        '(.{2})(.{2})(.{2})(.{2}).(.{2})(.{2}).(.{2})(.{2})(.{18})',
        '\4\3\2\1-\6\5-\8\7\9'
    )
 ) from dual

यह वह संदर्भ है जहां मुझे क्वेरी मिली है (मुझे इसे समायोजित करना होगा क्योंकि मूल में कुछ त्रुटियां हैं):https://community.oracle.com/thread/1063096?tstart=0

या यदि आप इसे जावा के साथ करना चाहते हैं तो जावा में उपरोक्त समाधान का अनुवाद करना काफी सरल है:

/**
 * input: "9BB2A2B8DF8747B0982F2F1702E1D18B"
 * output: "B8A2B29B-87DF-B047-982F-2F1702E1D18B";
 */
public String hexToStr(String guid) {       
    return guid.replaceAll("(.{8})(.{4})(.{4})(.{4})(.{12})", "$1-$2-$3-$4-$5").replaceAll("(.{2})(.{2})(.{2})(.{2}).(.{2})(.{2}).(.{2})(.{2})(.{18})", "$4$3$2$1-$6$5-$8$7$9");
}

java.util.UUID . वर्ग का उपयोग करने का एक अधिक मानक तरीका संभव नहीं है क्योंकि SYS_GUID() . का Oracle कार्यान्वयन RFC 4122 के अनुरूप नहीं है। देखें Oracle का SYS_GUID() UUID RFC 4122 अनुपालन करता है?



  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. विभिन्न स्कीमाओं के माध्यम से कैसे लूप करें और प्रत्येक पर कुछ एसक्यूएल निष्पादित करें?

  3. मैं जेपीए/हाइबरनेट में मूल एसक्यूएल स्क्रिप्ट कैसे निष्पादित कर सकता हूं?

  4. हाइव क्वेरी लैंग्वेज में प्राइमरी की और इंडेक्स पॉसिबल है या नहीं?

  5. दो Oracle टाइमस्टैम्प के बीच सेकंड प्राप्त करना