문자열 형식의 ORACLE RAW(오라클 RAW)에서 표준 GUID로
변환할 해결책을 찾고 있습니다.Oracle RAW GUID
인에String
규격에 맞는 형식GUID
체재를 갖추다저는 제 사용 사례에 대한 해결책을 찾을 수 없습니다.다음은 제가 찾고 있는 것의 예입니다.
ORACLE RAW (String): 9BB2A2B8DF8747B0982F2F1702E1D18B
이것은 자바 코드를 사용하여 표준 또는 괄호로 표시된 GUID로 변환되어야 합니다.
B8A2B29B-87DF-B047-982F-2F1702E1D18B or {B8A2B29B-87DF-B047-982F-2F1702E1D18B}
미리 도와주셔서 감사합니다.
간단한 방법은 선택할 때 RAW GUID를 VARCHAR로 변환하는 것입니다.그런 다음 String으로 설정된 결과에서 읽습니다.공식은 다음과 같습니다.
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
또는 Java로 실행하려면 Java에서 위의 솔루션을 번역하는 것이 매우 간단합니다.
/**
* 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()
는 RFC 4122와 호환되지 않습니다.Oracle의 SYS_GUID() UUID RFC 4122 준수 여부를 참조하십시오.
저는 이 변환을 하기 위해 콘솔 앱을 작성했습니다.하루에 몇 번씩 해야 해서 유용합니다.
경로 상에 출력 디렉토리를 컴파일하고 정의하는 것이 필요합니다.
https://github.com/lucassc/oracleuuid .
SQL 버전
1. GUID를 Oracle Raw에 연결
-- 입력가이드 : B8A2B29B-87DF-B047-982F-2F1702E1D18B
-- 출력 오라클 원시: 9BB2A2B8DF8747B0982F2F1702E1D18B
SELECT hextoraw(substr(guid, 7, 2) || substr(guid, 5, 2) ||
substr(guid, 3, 2) || substr(guid, 1, 2) ||
substr(guid, 12, 2) || substr(guid, 10, 2) ||
substr(guid, 17, 2) || substr(guid, 15, 2) ||
substr(guid, 20, 4) || substr(guid, 25, 12))
FROM (SELECT 'B8A2B29B-87DF-B047-982F-2F1702E1D18B' guid FROM dual);
2. Oracle Raw to GUID
-- 입력 Oracle Raw: 9BB2A2B8DF8747B0982F2F1702E1D18B
-- 출력가이드 : B8A2B29B-87DF-B047-982F-2F1702E1D18B
SELECT UPPER(substr(hextoraw(oracleRaw), 7, 2) || substr(hextoraw(oracleRaw), 5, 2) ||
substr(hextoraw(oracleRaw), 3, 2) || substr(hextoraw(oracleRaw), 1, 2) || '-' ||
substr(hextoraw(oracleRaw), 11, 2)|| substr(hextoraw(oracleRaw), 9, 2) || '-' ||
substr(hextoraw(oracleRaw), 15, 2)|| substr(hextoraw(oracleRaw), 13, 2)|| '-' ||
substr(hextoraw(oracleRaw), 17, 4)|| '-'|| substr(hextoraw(oracleRaw), 21, 12))
FROM (SELECT '9BB2A2B8DF8747B0982F2F1702E1D18B' oracleRaw FROM dual);
언급URL : https://stackoverflow.com/questions/37684714/oracle-raw-in-string-format-to-standard-guid
'source' 카테고리의 다른 글
날짜를 기준으로 볼륨 계산 (0) | 2023.09.14 |
---|---|
여러 도메인 포인팅 루트 폴더는 web.config의 도메인 이름에 따라 하위 폴더를 포인팅해야 합니다. (0) | 2023.09.14 |
Mysql이 시작되지 않음 - ibdata1이 손상되었습니까? - 운영 체제 오류 13번 - 권한 문제 (0) | 2023.09.14 |
파워셸 스크립트를 백그라운드에서 분당 한 번 실행 (0) | 2023.09.14 |
Pandas value_counts()에서 값 추출 (0) | 2023.09.14 |