sql >> データベース >  >> RDS >> Oracle

文字列形式のORACLERAWを標準GUIDに変換

    簡単な方法は、RAWGUIDを選択したときに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

    または、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()のOracle実装のため不可能です RFC4122に準拠していません。を参照してください。 OracleのSYS_GUID()UUID RFC 4122に準拠していますか?



    1. Initcapは4文字未満の単語をスキップします

    2. 無効なXML形式-これを回避する方法

    3. postgresql内で分散トランザクションを処理する方法は?

    4. psycopg2を使用したpostgresqlDBの作成