जब आप इसे चुनते हैं तो 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 अनुपालन करता है?